docs: def wait(self, timeout=None):
          """pause the current coroutine until this event is set
  
          .. note::
  
              this method will block the current coroutine if :meth:`set` has not
              been called.
  
          :param timeout:
              the maximum amount of time to block in seconds. the default of
              ``None`` allows indefinite blocking.
          :type timeout: number or None
  
          :returns:
              ``True`` if a timeout was provided and was hit, otherwise ``False``
          """
          if self._is_set:
              return False
  
          current = compat.getcurrent()  # the waiting greenlet
  
          waketime = None if timeout is None else time.time() + timeout
          if timeout is not None:
              scheduler.schedule_at(waketime, current)
  
          self._waiters.append(current)
          scheduler.state.mainloop.switch()
  
          if timeout is not None:
              if not scheduler._remove_timer(waketime, current):
                  scheduler.state.awoken_from_events.discard(current)
                  if current in self._waiters:
                      self._waiters.remove(current)
                  return True
  
          return False