UNPKG

@thi.ng/rstream

Version:

Reactive streams & subscription primitives for constructing dataflow graphs / pipelines

35 lines (34 loc) 766 B
import { State } from "./api.js"; import { __optsWithID } from "./idgen.js"; import { stream } from "./stream.js"; const fromPromise = (src, opts) => { let canceled = false; let isError = false; let err = {}; src.catch((e) => { err = e; isError = true; }); return stream((stream2) => { src.then( (x) => { if (!canceled && stream2.getState() < State.DONE) { if (isError) { stream2.error(err); err = null; } else { stream2.next(x); stream2.closeIn !== "never" && stream2.done(); } } }, (e) => stream2.error(e) ); return () => { canceled = true; }; }, __optsWithID("promise", opts)); }; export { fromPromise };