code: function emit(eventName, data, parent) {
      if (!this.__listeners || !this.__listeners[eventName]) {
          return;
      }
  
      let self = this,
          event = new Event(eventName, data, this, parent);
  
      this
          .getListeners(eventName)
          .forEach((config) => {
              if (config.once === true) {
                  self.off(eventName, config.fn, config.context, config.args, config.once);
              }
              execute(event, config);
          });
  }
docs: Emits an event
  @param {string} eventName
  @param {mixed} data
  @param {Event|null} parent