stopListening(obj, name, callback) {
    let listeningTo = this._listeningTo
    if (!listeningTo) return this
    const remove = !name && !callback
    if (!callback && typeof name === 'object') callback = this
    if (obj) (listeningTo = {})[obj._listenId] = obj
    for (const id in listeningTo) {
      obj = listeningTo[id]
      obj.off(name, callback, this)
      if (remove || Object.keys(obj._events).length === 0) delete this._listeningTo[id]
    }
    return this
  }
stop listening an event for a given object
@method stopListening
@param {Object} obj
@param {String} name
@param {Function} callback