pub fn stream_batches<TUpstream, TSunk, FnBatchMap, TBatch>(
    upstream: impl IntoIterator<Item = TSunk>,
    map_batch: FnBatchMap,
    batch_size: usize,
    batch_timeout: Duration
) -> impl Stream<Item = TBatch>where
    TUpstream: Stream<Item = TSunk>,
    FnBatchMap: Fn(Vec<TSunk>) -> TBatch,