once(name, callback, context) {
    let once
    if (!eventsApi(this, 'once', name, [callback, context]) || !callback) return this
    const off = () => this.off(name, once)
    once = function() {
      off(name, once)
      callback.apply(this, arguments)
    }
    once._callback = callback
    return this.on(name, once, context)
  }
listen to an event only once
@method once
@param {String} name
@param {Function} callback
@param {Object} context