async fn join_streams<T, V, E, R>(
    stream: PushStream<T>,
    sink: RequestSink<<T as Decode>::Object>,
    reply: V
) -> Result<(), Error>where
    T: Decode,
    E: Into<Error>,
    V: Future<Output = Result<R, E>>,