src/util/index.js
function emitFirst (emitter, events, handler) {
  handler = once(handler)
  events.forEach((e) => {
    emitter.once(e, (...args) => {
      events.forEach((ev) => {
        emitter.removeListener(ev, handler)
      })
      handler.apply(emitter, args)
    })
  })
}
function emitFirst (emitter, events, handler) {
  handler = once(handler)
  events.forEach((e) => {
    emitter.once(e, (...args) => {
      events.forEach((ev) => {
        emitter.removeListener(ev, handler)
      })
      handler.apply(emitter, args)
    })
  })
}
function emitFirst ( emitter , events , handler ) { handler = once ( handler ) events . forEach ( ( e ) => { emitter . once ( e , ( ... args ) => { events . forEach ( ( ev ) => { emitter . removeListener ( ev , handler ) } ) handler . apply ( emitter , args ) } ) } ) }
Registers `handler` to each event in `events`. The `handler`
will only be called for the first event fired, at which point
the `handler` will be removed as a listener.

Ensures `handler` is only called once.

@example
// will call `callback` when `start` or `error` is emitted by `this`
emitFirst(this, ['error', 'start'], callback)

@private
@param {EventEmitter} emitter The emitter to listen on
@param {Array<string>} events The events to listen for
@param {function(*)} handler The handler to call when an event is triggered
@returns {void}
Registers handler to each event in events . The handler will only be called for the first event fired at which point the handler will be removed as a listener .