export function withTimeout(promise: Promise, ms: number): Promise { let timeout: NodeJS.Timeout return Promise.race([ promise.then((result) => { clearTimeout(timeout) return result }), new Promise((_, reject) => { timeout = setTimeout(() => { reject(new Error(`Operation timed out after ${ms}ms`)) }, ms) }), ]) }