code: function(events, name, callback, options) {
      if (!events) return;
  
      let i = 0,
          listening;
      let context = options.context,
          listeners = options.listeners;
  
      // Delete all events listeners and "drop" events.
      if (!name && !callback && !context) {
          let ids = Object.keys(listeners);
          for (; i < ids.length; i++) {
              listening = listeners[ids[i]];
              delete listeners[listening.id];
              delete listening.listeningTo[listening.objID];
          }
          return;
      }
  
      let names = name ? [name] : Object.keys(events);
      for (; i < names.length; i++) {
          name = names[i];
          let handlers = events[name];
  
          // Bail out if there are no events stored.
          if (!handlers) break;
  
          // Replace events if there are any remaining.  Otherwise, clean up.
          let remaining = [];
          for (let j = 0; j < handlers.length; j++) {
              let handler = handlers[j];
              if (
                  (callback && callback !== handler.callback && callback !== handler.callback._callback) ||
                  (context && context !== handler.context)
              ) {
                  remaining.push(handler);
              } else {
                  listening = handler.listening;
                  if (listening && --listening.count === 0) {
                      delete listeners[listening.id];
                      delete listening.listeningTo[listening.objID];
                  }
              }
          }
  
          // Update tail event if the list has any events.  Otherwise, clean up.
          if (remaining.length) {
              events[name] = remaining;
          } else {
              delete events[name];
          }
      }
      return events;
  }
docs: The reducing API that removes a callback from the `events` object.