pub fn async_acquire_shared_session_with_result<T, F>(
    shared: SharedChannel<LinearToShared<F>>,
    cont1: impl FnOnce(Z) -> PartialSession<(<F as SharedRecApp<SharedToLinear<LinearToShared<F>>>>::Applied, ()), SendValue<T, End>> + Send + 'static
) -> JoinHandle<T> where
    F: Protocol + SharedRecApp<SharedToLinear<LinearToShared<F>>>,
    T: 'static + Send,
    <F as SharedRecApp<SharedToLinear<LinearToShared<F>>>>::Applied: Protocol