docs: def _trigger_event(self, event):
      """
      Private. Triggers and event and removes all one-off listeners for that event.
      """
  
      if event is None or event not in self.__listeners:
        raise ValueError('invalid event type: {0!r}'.format(event))
  
      # Check the event has not already been triggered, then mark
      # the event as triggered.
      if event in self.__event_set:
        raise RuntimeError('event already triggered: {0!r}'.format(event))
      self.__event_set.add(event)
      listeners = self.__listeners[event] + self.__listeners[None]
  
      # Remove one-off listeners.
      self.__listeners[event][:] = (l for l in self.__listeners[event] if not l.once)
      self.__listeners[None][:] = (l for l in self.__listeners[None] if not l.once)
  
      for listener in listeners:
        # XXX: What to do on exceptions? Catch and make sure all listeners
        # run through? What to do with the exception(s) then?
        listener.callback(self, event)