@reactivex/ix-esnext-esm
Version:
The Interactive Extensions for JavaScript
33 lines (31 loc) • 910 B
JavaScript
import { AsyncSink } from './asyncsink';
import { memoize } from './operators/memoize';
export function asyncifyErrback(func) {
return function (...args) {
const sink = new AsyncSink();
const handler = function (err, ...innerArgs) {
if (err) {
sink.error(err);
sink.end();
}
else {
sink.write(innerArgs.length === 1 ? innerArgs[0] : innerArgs);
sink.end();
}
};
try {
func(...args.concat(handler));
}
catch (e) {
sink.error(e);
sink.end();
}
const yielder = async function* () {
for (let next; !(next = await sink.next()).done;) {
yield next.value;
}
};
return memoize()(yielder());
};
}
//# sourceMappingURL=asyncifyerrback.mjs.map