<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def disconnect(self, client_id, conn_string):
 """Disconnect from a device on behalf of a client. See :meth:`AbstractDeviceAdapter.disconnect`. 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 such as not being connected to the device. DeviceAdapterError: The adapter had an issue disconnecting. """


        conn_id = self._client_connection(client_id, conn_string)

        try:
            await self.adapter.disconnect(conn_id)
        finally:
            self._hook_disconnect(conn_string, client_id)