What's special about the 'error' event on an EventEmitter, compared to any other event?
A strong answer knows the 'error' event throws synchronously from inside emit, and treats attaching a listener as taking ownership of the emitter's lifecycle
So 'error' is the one event name that EventEmitter treats specially. For any other event, emitting with zero listeners is just a no-op, nothing happens. But if an emitter emits 'error' and nothing is listening, Node throws the error and the process crashes with that Unhandled 'error' event message. Which is why the standard advice is to always attach an 'error' listener to streams, sockets, servers, basically any emitter that can fail. I think the reason these objects report failures as events rather than exceptions or rejections is that the failure happens later, after the original call has already returned, so there's nothing to throw into. Once a listener is attached the error gets delivered like any other event and the process keeps running, and a typical handler just logs the error and cleans up the resource.