A modest proposal: throwing errors on uncaught 'error' events in EventEmitter should be made optional, rather than mandatory.
Looking back at the original thread that proposed the throwing behavior (https://groups.google.com/d/topic/nodejs/7BU_1BB9zeM/discussion), I'm surprised at how little debate there was about adding built-in special-case events to a general library class. The throwing behavior seems like an abstraction flaw. Event handles are an "userspace" concept, and the lib/runtime shouldn't be imposing semantics on that. In particular, 'error' is a very generic term, and useful enough that it ought to be reserved for whatever the app intends for it. For example, I might have an app that produces "success" or "error" events. The "error" events may even be anticipated and normal within the concept space of the app. They may be being broadcast simply for logging hooks--if I care to log "error" events, I'll listen for them, but if I don't care, I shouldn't be required to install a listener to prevent the app from halting. You might argue that I should rename the "error" event to "failure" or some other term, but that seems awfully heavy-handed. If variable naming truly is one of the hard problems of computer science, then event naming is similarly difficult, and as such it's a little rude for the API to impose any restrictions, especially for such a semantically ambiguous term. Of course, it's probably not feasible at this point to remove throwing behavior from the API entirely, but it seems fairly easy to change it to a switchable default. One could imagine a lot of different ways of implementing this using module-level configuration: 1. A simple on/off boolean property 2. A method that lets you set the name of the 'error' event, or blank if you don't want the automatic throwing 3. A method that lets you set a common callback for all emitters that aren't handling 'error'. Personally, I prefer some combination of 2 and 3. In any case, if there's interest from the community, I'd be happy to contribute a pull request for this. -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en
