public static async IAsyncEnumerable <User> GetUsers(this IUsersClient usersClient, Pagination?pagination = null, [EnumeratorCancellation] CancellationToken cancellationToken = default) { pagination ??= Pagination.Default; var fetchPage = new Func <Pagination, Task <IPagedResponse <User> > >(async p => { var page = await usersClient.GetUsersAsync(p?.Limit, p?.Before, p?.After, cancellationToken); return(page.Result); }); await foreach (var user in pagination.EnumerateAsynchronously(fetchPage) .WithCancellation(cancellationToken)) { yield return(user); } }