code: def _run(self):
          
          # dispatch auth data on first scheduling after start
          state_change = ActionUpdateTransportAuthData(
              f'{self._user_id}/{self._client.api.token}',
          )
          self.greenlet.name = f'MatrixTransport._run node:{pex(self._raiden_service.address)}'
          self._raiden_service.handle_and_track_state_change(state_change)
          try:
              # waits on _stop_event.ready()
              self._global_send_worker()
              # children crashes should throw an exception here
          except gevent.GreenletExit:  # killed without exception
              self._stop_event.set()
              gevent.killall(self.greenlets)  # kill children
              raise  # re-raise to keep killed status
          except Exception:
              self.stop()  # ensure cleanup and wait on subtasks
              raise
docs: Runnable main method, perform wait on long-running subtasks