MCPcopy Create free account
hub / github.com/deepnote/vscode-deepnote / raceTimeout

Function raceTimeout

src/platform/common/utils/async.ts:47–61  ·  view source on GitHub ↗
(timeout: number, defaultValue: T, ...promises: Promise<T>[])

Source from the content-addressed store, hash-verified

45export function raceTimeout<T>(timeout: number, ...promises: Promise<T>[]): Promise<T | undefined>;
46export function raceTimeout<T>(timeout: number, defaultValue: T, ...promises: Promise<T>[]): Promise<T>;
47export function raceTimeout<T>(timeout: number, defaultValue: T, ...promises: Promise<T>[]): Promise<T> {
48 const resolveValue = isPromiseLike(defaultValue) ? undefined : defaultValue;
49 if (isPromiseLike(defaultValue)) {
50 promises.push(defaultValue as unknown as Promise<T>);
51 }
52
53 let promiseResolve: ((value: T) => void) | undefined = undefined;
54
55 const timer = setTimeout(() => promiseResolve?.(resolveValue as unknown as T), timeout);
56
57 return Promise.race([
58 Promise.race(promises).finally(() => clearTimeout(timer)),
59 new Promise<T>((resolve) => (promiseResolve = resolve))
60 ]);
61}
62
63export function raceTimeoutError<T>(timeout: number, error: Error, ...promises: Promise<T>[]): Promise<T> {
64 let promiseReject: ((value: unknown) => void) | undefined = undefined;

Calls 2

isPromiseLikeFunction · 0.85
pushMethod · 0.65

Tested by

no test coverage detected