public GroupMembership GetMembership(string groupKey) { GroupMembership membership = new GroupMembership(); using (PoolItem <DirectoryService> poolService = this.directoryServicePool.Take(NullValueHandling.Ignore)) { string token = null; MembersResource.ListRequest request = poolService.Item.Members.List(groupKey); request.PrettyPrint = false; Trace.WriteLine($"Getting members from group {groupKey}"); do { request.PageToken = token; Members members; try { this.WaitForGate(); members = request.ExecuteWithRetry(RetryEvents.Backoff | RetryEvents.Timeout); } finally { this.ReleaseGate(); } if (members.MembersValue != null) { foreach (Member member in members.MembersValue) { if (!string.IsNullOrWhiteSpace(member.Email)) { membership.AddMember(member); } } } token = members.NextPageToken; } while (token != null); } Trace.WriteLine($"Returned {membership.Count} members from group {groupKey}"); return(membership); }