code: function PulseEmitter(options) {
      this.options = Object.freeze(plet.merge({
          endEvent: 'end', 
          errorEvent: 'error',
          emitErrors: false
      }, options, true, true, true));
      events.EventEmitter.call(this);
  }
docs: Basis for an {EventEmitter} with control flow operations and asynchronicity
  
  @class PulseEmitter
  @requires events
  @arg {Object} [options={}] the pulse emitter options
  @arg {String} [options.endEvent=end] the event type/name that will be emitted when a pump has completed
  @arg {String} [options.errorEvent=error] the event type/name that will be emitted when an error occurs
  @arg {Boolean} [options.emitErrors=false] true to catch errors that occur with listeners and emit an error event for each error encountered