code: def wait_for_handshake(self) -> "Future[SSLIOStream]":
          
          if self._ssl_connect_future is not None:
              raise RuntimeError("Already waiting")
          future = self._ssl_connect_future = Future()
          if not self._ssl_accepting:
              self._finish_ssl_connect()
          return future
docs: Wait for the initial SSL handshake to complete.
  
          If a ``callback`` is given, it will be called with no
          arguments once the handshake is complete; otherwise this
          method returns a `.Future` which will resolve to the
          stream itself after the handshake is complete.
  
          Once the handshake is complete, information such as
          the peer's certificate and NPN/ALPN selections may be
          accessed on ``self.socket``.
  
          This method is intended for use on server-side streams
          or after using `IOStream.start_tls`; it should not be used
          with `IOStream.connect` (which already waits for the
          handshake to complete). It may only be called once per stream.
  
          .. versionadded:: 4.2
  
          .. versionchanged:: 6.0
  
             The ``callback`` argument was removed. Use the returned
             `.Future` instead.