pub async fn with_signal_handler<F, E>(f: F) -> Result<(), E>where
    F: FusedFuture<Output = Result<(), E>> + Unpin,