pub async fn maybe_cancel<'a, F: Future + 'a>( token: &CancellationToken, f: F, ) -> Result<F::Output, Box<dyn Error + Send + Sync>>