System.Interactive.Async Adapted from System.Linq.Grouping from .NET Framework Source: https://github.com/dotnet/corefx/blob/b90532bc97b07234a7d18073819d019645285f1c/src/System.Linq/src/System/Linq/Grouping.cs#L64 An iterator that can produce an array or through an optimized path. Produce an array of the sequence through an optimized path. The array. Produce a of the sequence through an optimized path. The . Returns the count of elements in the sequence. If true then the count should only be calculated if doing so is quick (sure or likely to be constant time), otherwise -1 should be returned. The number of elements. Advances the enumerator to the next element in the sequence, returning the result asynchronously. Task containing the result of the operation: true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the sequence. Asynchronous version of the IEnumerable<T> interface, allowing elements of the enumerable sequence to be retrieved asynchronously. Element type. Gets an asynchronous enumerator over the sequence. Enumerator for asynchronous enumeration over the sequence. Asynchronous version of the IEnumerator<T> interface, allowing elements to be retrieved asynchronously. Element type. Gets the current element in the iteration. Advances the enumerator to the next element in the sequence, returning the result asynchronously. Cancellation token that can be used to cancel the operation. Task containing the result of the operation: true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the sequence.