diff --git a/lib/events.js b/lib/events.js index 63d79cea6d..3ea798b3bd 100644 --- a/lib/events.js +++ b/lib/events.js @@ -140,7 +140,10 @@ EventEmitter.prototype.emit = function emit(type) { } else if (er instanceof Error) { throw er; // Unhandled 'error' event } else { - throw new Error('Uncaught, unspecified "error" event.'); + // At least give some kind of context to the user + var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); + err.context = er; + throw err; } return false; } diff --git a/test/parallel/test-event-emitter-errors.js b/test/parallel/test-event-emitter-errors.js new file mode 100644 index 0000000000..5ee2c87052 --- /dev/null +++ b/test/parallel/test-event-emitter-errors.js @@ -0,0 +1,8 @@ +var EventEmitter = require('events'); +var assert = require('assert'); + +var EE = new EventEmitter(); + +assert.throws(function() { + EE.emit('error', 'Accepts a string'); +}, /Accepts a string/);