async emitParallel(eventName, ...args) {
    assertEventName(eventName, this[EVENT_NAMES]);

    const event = new Event(eventName);

    await Promise.all(
      this.listeners(eventName).map((listener) => listener(...args, event))
    );

    if (event.shouldStopPropagating) {
      return false;
    }

    return true;
  }
Asynchronously and concurrently calls each of the `listeners` registered
for the event named `eventName`, in the order they were registered,
passing the supplied arguments to each.

Returns a promise that will resolve to `false` if a listener stopped
propagation, `true` otherwise.

@async
@param {String} eventName - The name of the event
@param {any} ...args - The arguments to pass to the listeners
@returns {Promise<Boolean>}