docs: def ifire(self, event, *args, **kwargs):
          """
          Iteratively fire event, returning generator. Calls each handler using given arguments, upon iteration,
          yielding each result.
  
          :param str name: Event name
          :param tuple args: positional arguments to call each handler with
          :param dict kwargs: keyword arguments to call each handler with
          :return generator: a generator yielding a tuple of handler, return value
          """
          if not self._maybe_create_on_fire(event):
              return
  
          # Wrap the generator per item to force that this method be a generator
          # Python 3.x of course has yield from, which would be great here.
          # for x in self[event].ifire(*args, **kwargs)
          #     yield x
          return self[event].ifire(*args, **kwargs)