Skip to content

Commit

Permalink
Fixes #262 waitFor listeners leakage
Browse files Browse the repository at this point in the history
  • Loading branch information
DigitalBrainJS committed Jun 14, 2020
1 parent bcbb5d3 commit b4263f5
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 1 deletion.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/).

For changes before version 2.2.0, please see the commit history

## [6.4.3] - 2020-06-14

### Fixed
- waitFor listeners leakage issue (#262) @DigitalBrainJS

## [6.4.2] - 2020-05-28

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[![Build Status](https://travis-ci.org/EventEmitter2/EventEmitter2.svg?branch=master)](https://travis-ci.org/EventEmitter2/EventEmitter2)
[![Coverage Status](https://coveralls.io/repos/github/EventEmitter2/EventEmitter2/badge.svg?branch=v6.4.1)](https://coveralls.io/github/EventEmitter2/EventEmitter2?branch=v6.4.1)
[![Coverage Status](https://coveralls.io/repos/github/EventEmitter2/EventEmitter2/badge.svg?branch=v6.4.3)](https://coveralls.io/github/EventEmitter2/EventEmitter2?branch=v6.4.1)
[![NPM version](https://badge.fury.io/js/eventemitter2.svg)](http://badge.fury.io/js/eventemitter2)
[![Dependency Status](https://img.shields.io/david/asyncly/eventemitter2.svg)](https://david-dm.org/asyncly/eventemitter2)
[![npm](https://img.shields.io/npm/dm/eventemitter2.svg?maxAge=2592000)]()
Expand Down
1 change: 1 addition & 0 deletions lib/eventemitter2.js
Original file line number Diff line number Diff line change
Expand Up @@ -1494,6 +1494,7 @@
if (filter && !filter.apply(self, arguments)) {
return;
}
self.off(event, listener);
if (options.handleError) {
var err = arguments[0];
err ? reject(err) : resolve(toArray.apply(null, arguments).slice(1));
Expand Down
39 changes: 39 additions & 0 deletions test/simple/waitFor.js → test/waitFor/waitFor.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
var simpleEvents = require('nodeunit').testCase;
var file = '../../lib/eventemitter2';
var EventEmitter2;
var assert= require('assert');

if (typeof require !== 'undefined') {
EventEmitter2 = require(file).EventEmitter2;
Expand Down Expand Up @@ -110,5 +111,43 @@ module.exports = simpleEvents({

emitter.emit('foo', 1);
emitter.emit('foo', 2);
},

'6. should clear internal listeners once its promise resolved': function (done) {
var emitter = new EventEmitter2({verbose: true});

emitter.waitFor('foo', {
filter: function (arg0) {
return arg0 === 2;
},
timeout: 50
}).then(function (data) {
assert.equal(data[0], 2);
assert.equal(emitter.listenerCount(), 0);
done();
}).catch(done);

assert.equal(emitter.listenerCount(), 1);

emitter.emit('foo', 2);
},

'7. should clear internal listeners once its promise resolved (wildcard)': function (done) {
var emitter = new EventEmitter2({verbose: true, wildcard: true});

emitter.waitFor('foo.*', {
filter: function (arg0) {
return arg0 === 2;
},
timeout: 50
}).then(function (data) {
assert.equal(data[0], 2);
assert.equal(emitter.listenerCount('**'), 0);
done();
}).catch(done);

assert.equal(emitter.listenerCount('**'), 1);

emitter.emit('foo.bar', 2);
}
});

0 comments on commit b4263f5

Please sign in to comment.