* Read one item from an async iterator, rejecting early if the signal aborts. * @param {AsyncIterator} iterator - The iterator to read from. * @param {AbortSignal|undefined} signal - Optional abort signal. * @returns {Promise >|IteratorResult }
(iterator, signal)
| 701 | * @returns {Promise<IteratorResult<Uint8Array[]>>|IteratorResult<Uint8Array[]>} |
| 702 | */ |
| 703 | function abortableNext(iterator, signal) { |
| 704 | if (signal === undefined) { |
| 705 | return iterator.next(); |
| 706 | } |
| 707 | |
| 708 | signal.throwIfAborted(); |
| 709 | |
| 710 | const next = iterator.next(); |
| 711 | const { promise, reject } = PromiseWithResolvers(); |
| 712 | const onAbort = getOnAbort(reject, signal); |
| 713 | signal.addEventListener('abort', onAbort, { __proto__: null, once: true }); |
| 714 | if (signal.aborted) { |
| 715 | onAbort(); |
| 716 | } |
| 717 | |
| 718 | return SafePromisePrototypeFinally(SafePromiseRace([next, promise]), () => { |
| 719 | signal.removeEventListener('abort', onAbort); |
| 720 | }); |
| 721 | } |
| 722 | |
| 723 | /** |
| 724 | * Wrap an async source so each pending read is abort-aware. |
no test coverage detected
searching dependent graphs…