( source: AbortSignal, timeoutMs: number, )
| 77 | } |
| 78 | |
| 79 | export function createDeadlineAbortSignal( |
| 80 | source: AbortSignal, |
| 81 | timeoutMs: number, |
| 82 | ): DeadlineAbortSignal { |
| 83 | const controller = new AbortController(); |
| 84 | const unlinkAbortSignal = linkAbortSignal(source, controller); |
| 85 | let didTimeout = false; |
| 86 | let timeout: ReturnType<typeof setTimeout> | undefined = setTimeout(() => { |
| 87 | didTimeout = true; |
| 88 | controller.abort(abortError()); |
| 89 | }, timeoutMs); |
| 90 | |
| 91 | return { |
| 92 | signal: controller.signal, |
| 93 | timedOut: () => didTimeout, |
| 94 | clear: () => { |
| 95 | if (timeout !== undefined) clearTimeout(timeout); |
| 96 | timeout = undefined; |
| 97 | unlinkAbortSignal(); |
| 98 | }, |
| 99 | }; |
| 100 | } |
nothing calls this directly
no test coverage detected