finds.dev← search

// the find

creationix/step

★ 2,194 · JavaScript · MIT · updated Aug 2017

An async control-flow library that makes stepping through logic easy.

Step is a serial/parallel async control-flow library for Node.js from 2011, predating Promises and async/await. It solved a real problem at the time by chaining callbacks via `this` as the next step's callback. In 2026, there is no reason to adopt this.

- The core idea is genuinely clever: using `this` as the continuation callback keeps step definitions clean and avoids deeply nested anonymous functions.

- Parallel execution and dynamic grouping are both handled, which was non-trivial to get right in raw callback code.

- The library is a single file (lib/step.js), so the entire implementation is auditable in minutes.

- Abandoned since 2017. Node.js has had native async/await since v7.6 (2017) — this library's entire reason for existing is gone.

- Using `this` as a magic callback means arrow functions break it silently, which was already a footgun when ES6 shipped.

- No TypeScript types, no maintained npm package, install instructions still reference copying files into `$HOME/.node_libraries` — a pattern Node dropped over a decade ago.

- Error handling relies on throwing inside step functions, which works inside the chain but offers no story for unhandled rejections or async errors that escape the step boundary.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →