export const sleep = (ms: number): Promise => new Promise((s) => setTimeout(s, ms)); export async function promiseWithTimeout( ms: number, promise: Promise, timeoutError = new Error("timeoutError") ): Promise { // create a promise that rejects in milliseconds const timeout = new Promise((_, reject) => { setTimeout(() => { reject(timeoutError); }, ms); }); return Promise.race([promise, timeout]); }