diff --git a/MoreLinq/Experimental/Async/Merge.cs b/MoreLinq/Experimental/Async/Merge.cs index 72c9a459c..f414eaa7d 100644 --- a/MoreLinq/Experimental/Async/Merge.cs +++ b/MoreLinq/Experimental/Async/Merge.cs @@ -201,13 +201,14 @@ async IAsyncEnumerable Async([EnumeratorCancellation]CancellationToken cancel // is in some defined state before disposing it otherwise it could throw // "NotSupportedException". - if (pendingTaskList is { Count: > 0 }) + if (pendingTaskList is { Count: > 0 } somePendingTaskList) { - while (await Task.WhenAny(pendingTaskList) - .ConfigureAwait(false) is { } completedTask) + do { - _ = pendingTaskList.Remove(completedTask); + var completedTask = await Task.WhenAny(somePendingTaskList).ConfigureAwait(false); + _ = somePendingTaskList.Remove(completedTask); } + while (somePendingTaskList.Count > 0); } foreach (var enumerator in enumeratorList)