pub async fn spawn_scheduler<JobRequest: Clone, JobOutputInfo, Error: From<Error> + From<WrappedPoisonError> + From<Error>>(
    result_dir: impl AsRef<Path>,
    control_context: Arc<Mutex<dyn RunContext<JobRequest, JobOutputInfo>>>,
    job: Box<dyn JobRunner<JobRequest, JobOutputInfo, Error>>,
    rest_handler: JoinHandle<()>
) -> Result<(), Error>