In GroupManager the 4 functions :-
RequestGroupTitles()
RequestGroupRoleMembers()
RequestGroupRoles()
RequestGroupMembers()
All use a UUID.random request ID which is used as the index key into the various group cache dictionary. If this UUID is returned from the above functions then the cache dictionaries can be used by client code to access the dictionaries by key and ensure the correct data is returned for the correct group.
I have tested basic functionally in my omvviewer-light and this seems to work nicely.
Simple client example :-
UUID request_roles_members = client.Groups.RequestGroupRoleMembers(group.ID);
UUID request_roles = client.Groups.RequestGroupRoles(group.ID);
....
....
Dictionary <UUID, GroupRole> grouproles;
List<KeyValuePair<UUID,UUID>> rolesmembers;
success=client.Groups.GroupRolesCaches.TryGetValue(request_roles, out grouproles);
success=client.Groups.GroupRolesMembersCaches.TryGetValue(request_roles_members, out rolesmembers);
Patch attached