pub async fn interruptible<T, E: From<InterruptError>>( rx: Receiver<()>, f: impl Future<Output = Result<T, E>> + Unpin) -> Result<T, E>