pub fn sender_session<T, Fut>(
    source: SharedChannel<Channel<T>>,
    make_val: impl FnOnce() -> Fut + Send + 'static
) -> Session<End> where
    T: Send + 'static,
    Fut: Future<Output = T> + Send