* Sleeps for the specified number of milliseconds, respecting an optional abort signal.
(ms: number, signal?: AbortSignal)
| 408 | * Sleeps for the specified number of milliseconds, respecting an optional abort signal. |
| 409 | */ |
| 410 | function sleep(ms: number, signal?: AbortSignal): Promise<void> { |
| 411 | if (signal?.aborted) { |
| 412 | return Promise.reject( |
| 413 | signal.reason ?? new DOMException('The operation was aborted.', 'AbortError') |
| 414 | ) |
| 415 | } |
| 416 | return new Promise((resolve, reject) => { |
| 417 | const onAbort = () => { |
| 418 | clearTimeout(timer) |
| 419 | reject(signal!.reason ?? new DOMException('The operation was aborted.', 'AbortError')) |
| 420 | } |
| 421 | const timer = setTimeout(() => { |
| 422 | signal?.removeEventListener('abort', onAbort) |
| 423 | resolve() |
| 424 | }, ms) |
| 425 | signal?.addEventListener('abort', onAbort, { once: true }) |
| 426 | }) |
| 427 | } |
| 428 | |
| 429 | /** |
| 430 | * Collapses a ProviderRequest into a single input string and optional system instruction |
no test coverage detected