def _run(self):
        """ Runnable main method, perform wait on long-running subtasks """
        # 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