def wait(self, timeout: Union[float, datetime.timedelta] = None) -> Awaitable[None]:
        """Block until the internal flag is true.

        Returns an awaitable, which raises `tornado.util.TimeoutError` after a
        timeout.
        """
        fut = Future()  # type: Future[None]
        if self._value:
            fut.set_result(None)
            return fut
        self._waiters.add(fut)
        fut.add_done_callback(lambda fut: self._waiters.remove(fut))
        if timeout is None:
            return fut
        else:
            timeout_fut = gen.with_timeout(
                timeout, fut, quiet_exceptions=(CancelledError,)
            )
            # This is a slightly clumsy workaround for the fact that
            # gen.with_timeout doesn't cancel its futures. Cancelling
            # fut will remove it from the waiters list.
            timeout_fut.add_done_callback(
                lambda tf: fut.cancel() if not fut.done() else None
            )
            return timeout_fut
def wait ( self , timeout : Union [ float , datetime . timedelta ] = None ) -> Awaitable [ None ] : fut = Future ( ) if self . _value : fut . set_result ( None ) return fut self . _waiters . add ( fut ) fut . add_done_callback ( lambda fut : self . _waiters . remove ( fut ) ) if timeout is None : return fut else : timeout_fut = gen . with_timeout ( timeout , fut , quiet_exceptions = ( CancelledError , ) ) timeout_fut . add_done_callback ( lambda tf : fut . cancel ( ) if not fut . done ( ) else None ) return timeout_fut
Block until the internal flag is true.

        Returns an awaitable, which raises `tornado.util.TimeoutError` after a
        timeout.