UNPKG

@fbltd/async

Version:

Miscellaneous async utils

23 lines (22 loc) 677 B
import { PromiseConfiguration } from "../../promise-configuration.js"; /** * @internal */ export const StreamFinishError = new Error("Stream is done"); export function next(dep) { const disposePromise = new PromiseConfiguration(); const resultPromise = new PromiseConfiguration(); Promise.race([dep.next(), disposePromise.promise]) .then((res) => { if (dep.done || disposePromise.isFulfilled) { resultPromise.reject(StreamFinishError); } else { resultPromise.resolve(dep.value); } }); return { promise: resultPromise.promise, dispose: () => disposePromise.resolve() }; }