code: def send_script_async(self, conn_id, data, progress_callback, callback):
          
  
          def monitor_callback(_conn_string, _conn_id, _event_name, event):
              if event.get('operation') != 'script':
                  return
  
              progress_callback(event.get('finished'), event.get('total'))
  
          async def _install_monitor():
              try:
                  conn_string = self._adapter._get_property(conn_id, 'connection_string')
                  return self._adapter.register_monitor([conn_string], ['progress'], monitor_callback)
              except:  #pylint:disable=bare-except;This is a legacy shim that must always ensure it doesn't raise.
                  self._logger.exception("Error installing script progress monitor")
                  return None
  
          monitor_id = self._loop.run_coroutine(_install_monitor())
          if monitor_id is None:
              callback(conn_id, self.id, False, 'could not install progress monitor')
              return
  
          future = self._loop.launch_coroutine(self._adapter.send_script(conn_id, data))
          future.add_done_callback(lambda x: self._callback_future(conn_id, x, callback, monitors=[monitor_id]))
docs: Asynchronously send a script to the device.