public async void SizedTimed_Long()
        {
            const long n    = 1_000_000;
            var        push = new ReplayAsyncEnumerable <long>(10, TimeSpan.FromHours(1));
            var        t    = push
                              .Reduce((a, b) => a + b)
                              .AssertResult(n * (n + 1) / 2);

            for (var i = 1; i <= n; i++)
            {
                await push.Next(i);
            }

            await push.Complete();

            await t;
        }
        public async void TimedSized_Long_Halfway()
        {
            const long n    = 1_000_000;
            var        push = new ReplayAsyncEnumerable <long>((int)n, TimeSpan.FromHours(1));
            var        t    = default(ValueTask);

            for (var i = 1; i <= n; i++)
            {
                await push.Next(i);

                if (i * 2 == n)
                {
                    t = push
                        .Reduce((a, b) => a + b)
                        .AssertResult(n * (n + 1) / 2);
                }
            }

            await push.Complete();

            await t;
        }