UNPKG

appium-xcuitest-driver

Version:

Appium driver for iOS using XCUITest for backend

29 lines (27 loc) 747 B
/** Error thrown by {@link withTimeout} when the deadline is exceeded. */ export class TimeoutError extends Error { constructor(message?: string) { super(message ?? 'Operation timed out'); this.name = 'TimeoutError'; } } /** Resolves with `promise` or rejects if it does not settle before `timeoutMs`. */ export async function withTimeout<T>( promise: Promise<T>, timeoutMs: number, message?: string, ): Promise<T> { let timer: NodeJS.Timeout | null = null; try { return await Promise.race([ promise, new Promise<T>((_resolve, reject) => { timer = setTimeout(() => reject(new TimeoutError(message)), timeoutMs); }), ]); } finally { if (timer) { clearTimeout(timer); } } }