public static Stream Concatenation(
            IAsyncEnumerable <Stream> streams,
            ArrayPool <byte> pool,
            int chunkSize,
            CancellationToken token = default)
        {
            if (streams == null)
            {
                throw new ArgumentNullException(nameof(streams));
            }

            if (pool == null)
            {
                throw new ArgumentNullException(nameof(pool));
            }

            ValidateChunkSize(chunkSize, nameof(chunkSize));
            return(UsingStream()
                   // ReSharper disable once MethodSupportsCancellation
                   .On(streams.Chunks(pool, chunkSize))
                   .WithCancellation(token)
                   .Build());
        }