pub async fn copy_len_with_progress<R, W, P>(
    read: R,
    write: W,
    buf: &mut [u8],
    len: u64,
    progress: P
) -> Result<u64, CopyError<<R as ErrorType>::Error, <W as ErrorType>::Error>>
where R: Read, W: Write, P: Fn(u64, u64),