GetAsyncEnumerator obtains an IAsyncEnumerator<T> for an IAsyncEnumerable<T>. It is not itself asynchronous and should return quickly; asynchronous initialization belongs in MoveNextAsync. section 14.1
The method parallels IEnumerable<T>.GetEnumerator, but supports await foreach and an optional CancellationToken. Because await foreach generates the call, pass cancellation through WithCancellation. section 14.3 section 14.1
Cancel an asynchronous iteration
await foreach (var item in collection.WithCancellation(token)) { Console.WriteLine(item); } section 14.3
