UNPKG

ix

Version:

The Interactive Extensions for JavaScript

28 lines (24 loc) 742 B
import { AsyncIterableX } from './asynciterablex.js'; import { throwIfAborted, AbortError } from '../aborterror.js'; /** @ignore */ export class NeverAsyncIterable extends AsyncIterableX<never> { constructor() { super(); } async *[Symbol.asyncIterator](signal?: AbortSignal) { throwIfAborted(signal); await new Promise<never>((_, reject) => { if (signal) { signal.addEventListener('abort', () => reject(new AbortError()), { once: true }); } }); } } /** * An async-iterable sequence that never returns a value. * * @returns {AsyncIterableX<never>} An async-iterable sequence that never returns a value. */ export function never(): AsyncIterableX<never> { return new NeverAsyncIterable(); }