public TryOptionAsync <IEnumerable <DepartmentEmployee> > Execute(DepartmentEmployeesQuery query, CancellationToken token = default) { var(count, department) = query; var dataQuery = client .DepartmentQueryable <DepartmentEmployeeRecord>(department) .Where(e => e.Type == nameof(DepartmentEmployeeRecord)); if (count > 0) { dataQuery = dataQuery.Take(count); } return(async() => { var iterator = dataQuery.ToFeedIterator(); var employees = new List <DepartmentEmployee>(); while (iterator.HasMoreResults) { foreach (var result in await iterator.ReadNextAsync(token)) { employees.Add(DepartmentEmployeeRecord.Map.ToDepartmentEmployee(result)); } } return Some(employees.AsEnumerable()); }); }