async def connect(self, client_id, conn_string):
        """Connect to a device on behalf of a client.

        See :meth:`AbstractDeviceAdapter.connect`.

        Args:
            client_id (str): The client we are working for.
            conn_string (str): A connection string that will be
                passed to the underlying device adapter to connect.

        Raises:
            DeviceServerError: There is an issue with your client_id.
            DeviceAdapterError: The adapter had an issue connecting.
        """
        conn_id = self.adapter.unique_conn_id()

        self._client_info(client_id)

        await self.adapter.connect(conn_id, conn_string)
        self._hook_connect(conn_string, conn_id, client_id)
Connect to a device on behalf of a client.

        See :meth:`AbstractDeviceAdapter.connect`.

        Args:
            client_id (str): The client we are working for.
            conn_string (str): A connection string that will be
                passed to the underlying device adapter to connect.

        Raises:
            DeviceServerError: There is an issue with your client_id.
            DeviceAdapterError: The adapter had an issue connecting.