docs: async def start_client(self,
                             sock: anyio.abc.SocketStream,
                             addr,
                             path: str,
                             headers: Optional[List] = None,
                             subprotocols: Optional[List[str]] = None):
          """Start a client WS connection on this socket.
  
          Returns: the AcceptConnection message.
          """
          self._sock = sock
          self._connection = WSConnection(ConnectionType.CLIENT)
          if headers is None:
              headers = []
          if subprotocols is None:
              subprotocols = []
          data = self._connection.send(
              Request(
                  host=addr[0],
                  target=path,
                  extra_headers=headers,
                  subprotocols=subprotocols))
          await self._sock.send_all(data)
  
          assert self._scope is None
          self._scope = True
          try:
              event = await self._next_event()
              if not isinstance(event, AcceptConnection):
                  raise ConnectionError("Failed to establish a connection",
                                        event)
              return event
          finally:
              self._scope = None