14 lines · 385 B · TypeScript
RawDownload
export function withTimeout<T>(promise: Promise<T>, ms: number): Promise<T> {  let timeout: NodeJS.Timeout  return Promise.race([    promise.then((result) => {      clearTimeout(timeout)      return result    }),    new Promise<never>((_, reject) => {      timeout = setTimeout(() => {        reject(new Error(`Operation timed out after ${ms}ms`))      }, ms)    }),  ])}