code: def disconnect_async(self, conn_id, callback):
          
  
          try:
              context = self.conns.get_context(conn_id)
          except ArgumentError:
              callback(conn_id, self.id, False, "Could not find connection information")
              return
  
          self.conns.begin_disconnection(conn_id, callback, self.get_config('default_timeout'))
  
          topics = context['topics']
          disconn_message = {'key': context['key'], 'client': self.name, 'type': 'command', 'operation': 'disconnect'}
  
          self.client.publish(topics.action, disconn_message)
docs: Asynchronously disconnect from a device that has previously been connected
  
          Args:
              conn_id (int): a unique identifier for this connection on the DeviceManager
                  that owns this adapter.
              callback (callable): A function called as callback(conn_id, adapter_id, success, failure_reason)
              when the disconnection finishes.  Disconnection can only either succeed or timeout.