docs: def on(self, event, f=None):
          """Registers the function ``f`` to the event name ``event``.
  
          If ``f`` isn't provided, this method returns a function that
          takes ``f`` as a callback; in other words, you can use this method
          as a decorator, like so::
  
              @ee.on('data')
              def data_handler(data):
                  print(data)
  
          In both the decorated and undecorated forms, the event handler is
          returned. The upshot of this is that you can call decorated handlers
          directly, as well as use them in remove_listener calls.
          """
  
          def _on(f):
              self._add_event_handler(event, f, f)
              return f
  
          if f is None:
              return _on
          else:
              return _on(f)