code: def send_rpc_async(self, conn_id, address, rpc_id, payload, timeout, callback):
          
  
          future = self._loop.launch_coroutine(self._adapter.send_rpc(conn_id, address, rpc_id, payload, timeout))
  
          def format_response(future):
              payload = None
              exception = future.exception()
              rpc_status = None
              rpc_response = b''
              failure = None
              success = True
  
              if exception is None:
                  payload = future.result()
                  rpc_status, rpc_response = pack_rpc_response(payload, exception)
              elif isinstance(exception, (RPCInvalidIDError, TileNotFoundError, RPCNotFoundError,
                                          RPCErrorCode, BusyRPCResponse)):
                  rpc_status, rpc_response = pack_rpc_response(payload, exception)
              else:
                  success = False
                  failure = str(exception)
  
              callback(conn_id, self.id, success, failure, rpc_status, rpc_response)
  
          future.add_done_callback(format_response)
docs: Asynchronously send an RPC to this IOTile device.