UNPKG

752 BJavaScriptView Raw
1import { AsyncSink } from './asyncsink';
2import { memoize } from './operators/memoize';
3export function asyncify(func) {
4 return function (...args) {
5 const sink = new AsyncSink();
6 const handler = function (...innerArgs) {
7 sink.write(innerArgs.length === 1 ? innerArgs[0] : innerArgs);
8 sink.end();
9 };
10 try {
11 func(...args.concat(handler));
12 }
13 catch (e) {
14 sink.error(e);
15 sink.end();
16 }
17 const yielder = async function* () {
18 for (let next; !(next = await sink.next()).done;) {
19 yield next.value;
20 }
21 };
22 return memoize()(yielder());
23 };
24}
25
26//# sourceMappingURL=asyncify.mjs.map