export function promiseTimeout( promise: Promise, timeoutMs: number ): Promise { let timeoutId: ReturnType; const timeoutPromise: Promise = new Promise((resolve) => { timeoutId = setTimeout(() => resolve(null), timeoutMs); }); return Promise.race([promise, timeoutPromise]).then((result: T | null) => { clearTimeout(timeoutId); return result; }); }