fireEventAsync(eventName, data) {
      return Promise.all(this.fireEvent(eventName, data));
    }
Fires an event and returns a promise that will resolve once all listeners have resolved.

@param eventName the event to fire
@param data optional data to pass to each event listener
@returns {Promise} a promise that will resolve when all listeners have resolved