diff --git a/lib/events.js b/lib/events.js index 9876b6494..b788b1cae 100644 --- a/lib/events.js +++ b/lib/events.js @@ -75,6 +75,10 @@ var EventEmitter = function() { this.emit(name, done); + if (!pending) { + deferred.resolve(); + } + return deferred.promise; }; }; diff --git a/test/unit/events.spec.coffee b/test/unit/events.spec.coffee index 7b6123b43..d50005b7f 100644 --- a/test/unit/events.spec.coffee +++ b/test/unit/events.spec.coffee @@ -93,6 +93,12 @@ describe 'events', -> done() + it 'should resolve asynchronously when no listener', (done) -> + spyDone = sinon.spy done + emitter.emitAsync('whatever').then spyDone + expect(spyDone).to.not.have.been.called + + #============================================================================ # events.bindAll #============================================================================