gensync

Allows users to use generators in order to write common functions that can be both sync or async.

async-done

Allows libraries to handle various caller provided asynchronous functions uniformly. Maps promises, observables, child processes and streams, and callbacks to callback style.