async fn await_cancelable<T, E, F>( shutdown_rx: &mut ShutdownToken, future: F, ) -> Result<T>where E: Into<RwError>, F: Future<Output = Result<T, E>>,