// the take
Do is a 2010-era async control-flow library for Node.js built around 'continuables' — functions that return a callback-accepting function instead of taking a callback directly. It offers parallel, chain, map, filter, and filterMap helpers on top of that pattern. It's really only of interest to someone doing archaeology on pre-Promise async patterns in early Node.
The continuable pattern (return a function awaiting callback/errback instead of taking them as args) is a clean, dependency-free way to make async values portable and composable, and it's a direct conceptual ancestor of Promises. Do.convert is a neat idea — wrapping a whole node-callback-style module (like fs) into continuable form in one call. The chain/parallel/map/filterMap helpers cover the actual common cases (sequence, fan-out, async array ops) that people hand-roll error-prone callback pyramids for.
Last commit is from July 2010 — this predates Promises, async/await, and even widespread CommonJS Promise adoption; it has been dead for over 15 years and was never updated for modern Node (no package.json engines field matching anything current, no module exports, likely breaks under strict mode or ESM). The errback-as-second-callback-arg convention is non-standard versus node's canonical (err, result) callback shape, so Do.convert's assumptions about library signatures don't hold for most real-world APIs. No error handling for thrown exceptions inside continuables (no try/catch around callback invocation), so a bug in a callback can crash silently or produce confusing stack traces. There's no reason to adopt this today — native Promises/async-await solve the same problems with language support, better stack traces, and no dependency at all.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →