emitAsync(event, ...args) {
    const promises = [];
    this.listeners(event).forEach(listener => {
      promises.push(listener(...args));
    });
    return Promise.all(promises);
  }
@param {!string} event
@param {...*} args
@return {!Promise}