public async void Push() { for (var i = 0; i < 10; i++) { var push = new MulticastAsyncEnumerable <int>(); var en = AsyncEnum.MergeConcurrently( push.Where(v => v % 2 == 0), push.Where(v => v % 2 != 0) ) .ToListAsync(); var t = Task.Run(async() => { for (var j = 0; j < 100_000; j++) { await push.Next(j); } await push.Complete(); }); var list = await en; await t; var set = new HashSet <int>(list); Assert.Equal(100_000, set.Count); } }