Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return async function* fork(input, dispatch) {
let cur = 0;
const threads = new Map();
const iter = forkMain(input, dispatch, threads, transducer);
const main = { iter, task: iter.next() };
const suspended = [];
try {
for (;;) {
const i = await R.any([main, ...threads.values()].map(forkCont));
if (i.done) {
if (i === main) return i.value;
threads.delete(i.key);
i.source.stop();
await i.iter.return();
continue;
}
i.task = i.iter.next();
if (!i.value) continue;
if (i === main) {
yield i.value;
} else {
if (i.value.type === "FLUSH") {
if (i.value.awaiting) {
i.value.awaiting.delete(i.key);
if (i.value.awaiting.size) continue;