appium-xcuitest-driver
Version:
Appium driver for iOS using XCUITest for backend
26 lines (23 loc) • 746 B
text/typescript
import {TimeoutError as AsyncboxTimeoutError, withTimeout as asyncboxWithTimeout} from 'asyncbox';
/** 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> {
try {
return await asyncboxWithTimeout(promise, timeoutMs, message);
} catch (err) {
if (err instanceof AsyncboxTimeoutError) {
throw new TimeoutError(err.message);
}
throw err;
}
}