on (event, callback) {
    if (!event) {
      this.warn('Tried add listener but no event specified.')
      return
    }

    if (typeof callback !== 'function') {
      this.warn('Tried add listener but no valid callback function specified.')
      return
    }

    const target = this.listeners[ event ] || (this.listeners[ event ] = [])
    target.push({ type: 'on', callback })
    this.log(`Added a listener for event: "${ event }".`)
  }
@param {string} event
@param {(message: Message) => void} callback