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; }); }