pub(crate) fn append_queue<A, Func, Fut>(
    builder: Func,
    rest: Session<Rec<InternalChoice<Either<End, SendValue<A, Z>>>>>
) -> Session<Rec<InternalChoice<Either<End, SendValue<A, Z>>>>> where
    A: Send + 'static,
    Func: FnOnce() -> Fut + Send + 'static,
    Fut: Future<Output = A> + Send + 'static,