code: function listens(pw, type, listener, remove) {
      for (var i = 0, ls = PulseEmitter.super_.prototype.listeners.call(pw, type), l = ls.length, lu = typeof listener === 'undefined'; i < l; i++) {
          if (remove && ls[i]._callback === listener) return PulseEmitter.super_.prototype.removeListener.call(pw, type, ls[i]);
          else if (remove && lu && ls[i]._cbtype !== catType) PulseEmitter.super_.prototype.removeListener.call(pw, type, ls[i]);
          else if (!remove && ls[i]._callback) ls.splice(i, 1, ls[i]._cbtype === catType ? undefined : ls[i]._callback);
      }
      return remove ? pw : ls;
  }
docs: Either removes listener(s) by type (and optionally by listener) or captures a list of listeners
  
  @private
  @arg {PulseEmitter} pw the pulse emitter
  @arg {String} type the event type
  @arg {function} [listener] the listener function to to remove (undefined will remove all non-internal listeners)
  @arg {Boolean} [remove] true to remove the specified external listener
  @returns {(PulseEmitter | function[])} the pulse emitter when removing, otherwise a list of listeners