156
157
export function raceTimeout<T>(promise: Promise<T>, timeout: number, onTimeout?: () => void): Promise<T | undefined> {
158
>
let promiseResolve: ((value: T | undefined) => void) | undefined = undefined;
async.ts
159
>
160
>
const timer = setTimeout(() => {
161
promiseResolve?.(undefined);
162
onTimeout?.();
164
>
165
>
return Promise.race([
166
>
promise.finally(() => clearTimeout(timer)),
167
>
new Promise<T | undefined>(resolve => promiseResolve = resolve)
168
>
]);
169
>
}
170
171
export function asPromise<T>(callback: () => T | Thenable<T>): Promise<T> {