I am trying to update my toolset with the new tools offered by C# 8, and one method that seems particularly useful is a version of Task.WhenAll that returns an IAsyncEnumera
Just for the fun of it, using System.Reactive and System.Interactive.Async:
public static async IAsyncEnumerable WhenEach( Task[] tasks) => Observable.Merge(tasks.Select(t => t.ToObservable())).ToAsyncEnumerable()