@thi.ng/rstream
Version:
Reactive streams & subscription primitives for constructing dataflow graphs / pipelines
35 lines (34 loc) • 766 B
JavaScript
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
};