export function withTimeout(timeout: number, promise: Promise, error?: Error): Promise { return Promise.race([ promise, new Promise((resolve, reject) => { setTimeout(() => { reject(error || new Error(`timed out after ${timeout}ms`)); }, timeout); }), ]); } export function sleep(timeout: number) { return new Promise((resolve) => { setTimeout(resolve, timeout); }); }