gemini-core
Version:
Utility which contains common modules for gemini and hermione
16 lines (13 loc) • 460 B
JavaScript
;
const _ = require('lodash');
const Promise = require('bluebird');
const EventEmitter = require('events').EventEmitter;
const promiseUtils = require('../../promise-utils');
module.exports = class AsyncEmitter extends EventEmitter {
emitAndWait(event, ...args) {
return _(this.listeners(event))
.map((l) => Promise.method(l).apply(this, args))
.thru(promiseUtils.waitForResults)
.value();
}
};