Almost every object in the previous sections is an event emitter: a readable stream announces data and end, an HTTP server announces request, a child process announces exit. EventEmitter is the base class behind them all, and its exact semantics — synchronous delivery, the special error event, listener leaks — explain a large share of the surprises in a Node codebase.
Callbacks also scatter one operation across many turns of the event loop, so by the time a driver logs a slow query, the request that caused it has left the call stack. AsyncLocalStorage carries a value along the whole asynchronous chain without a parameter in any signature, and the diagnostics channel lets a library expose its internals without committing to an API. Front-End Web Development covers promises as a language feature; V8 and libuv covers the libuv phases underneath.