pub async fn run(self, mut stop_receiver: watch::Receiver<bool>) -> anyhow::Result<()> {
        let task = tokio::select! {
            biased;
            _ = stop_receiver.changed() => return Ok(()),
            res = self.inner => match res {
                Ok(task) => task,
                Err(_) => anyhow::bail!("VM playground stopped before spawning loader task"),
            }
        };
        task.run(stop_receiver).await
    }
Runs a task until a stop request is received.
core/node/vm_runner/src/impls/playground.rs