code: def sleep(duration: float) -> "Future[None]":
      
      f = _create_future()
      IOLoop.current().call_later(
          duration, lambda: future_set_result_unless_cancelled(f, None)
      )
      return f
docs: Return a `.Future` that resolves after the given number of seconds.
  
      When used with ``yield`` in a coroutine, this is a non-blocking
      analogue to `time.sleep` (which should not be used in coroutines
      because it is blocking)::
  
          yield gen.sleep(0.5)
  
      Note that calling this function on its own does nothing; you must
      wait on the `.Future` it returns (usually by yielding it).
  
      .. versionadded:: 4.1