I don't quite get the academic disagreement. Its an EventEmitter, literally .. you can on/emit like usual. If you like, you can register async handlers (fine, not 'events'). You could identify those handlers with a prefix if you are concerned about mixups (e.g. `emitter.on('hook:validate')`).
I'll concede that this debate has sparked some ideas of better separating the 'handlers' from the regular 'events'. It might be more generically useful (and safer from programmer errors) if it served as more of a mix-in that you would add on to an EventEmitter (or any other object) and the api was name-spaced. Something like:
```
var emitter = new require('events').EventEmitter();
require('eventflow')(emitter);
// Adds (don't like 'flow', but works for illustration)
emitter.flow.handle('validate', function (model, [cb]) { ... });
emitter.flow.series();
emitter.flow.parallel();
// etc.
```
I'd probably still use an EventEmitter internally to take advantage of on(), setMaxListeners(), removeAllListeners(), etc.