pub fn spawn_controlled<T>(
    future_fn: Box<dyn FnOnce(Receiver<()>) -> T>
) -> JoinHandle<T::Output>where
    T: Future + Send + 'static,
    T::Output: Send + 'static,