pub(crate) fn shard_source_fetch<'inner, K, V, T, D, TInner>(
descs: StreamVec<'inner, TInner, (usize, ExchangeableBatchPart<T>)>,
name: &str,
client: impl Future<Output = PersistClient> + Send + 'static,
shard_id: ShardId,
key_schema: Arc<K::Schema>,
val_schema: Arc<V::Schema>,
is_transient: bool,
error_handler: ErrorHandler,
) -> (StreamVec<'inner, TInner, FetchedBlob<K, V, T, D>>, StreamVec<'inner, TInner, Infallible>, PressOnDropButton)