public async Task <AzureDevOpsIdentityDto> GetIdentityAsync(Uri collectionUri, Guid identityId)
        {
            // TODO: Consider using `GetManyAsync`
            var identity = await IdentitiesCache.GetOrAddAsync(
                identityId,
                () => GetIdentityFromApiAsync(collectionUri, identityId)
                );

            return(identity);
        }
        public async Task <AzureDevOpsIdentityDto[]> GetIdentitiesAsync(Uri collectionUri, Guid[] identityIds)
        {
            var cachedIdentities = await IdentitiesCache.GetManyAsync(
                identityIds
                );

            var identities         = cachedIdentities.Where(x => x.Value != null).Select(x => x.Value).ToList();
            var missingIdentityIds = identityIds.Where(x => !identities.Any(i => i.Id == x)).ToArray();

            if (missingIdentityIds.Any())
            {
                var missingIdentities = await GetIdentitiesFromApiAsync(collectionUri, missingIdentityIds);

                var cacheItems = missingIdentities
                                 .Select(x => new KeyValuePair <Guid, AzureDevOpsIdentityDto>(x.Id, x))
                                 .ToArray();

                await IdentitiesCache.SetManyAsync(cacheItems);

                identities.AddRange(missingIdentities);
            }

            return(identities.ToArray());
        }