/// <inheritdoc />
        public async Task <ObjectResult <IEnumerable <SelectorAndContentHashListWithCacheMetadata> > > GetSelectorsAsync(
            Context context,
            string cacheNamespace,
            Fingerprint weakFingerprint,
            int maxSelectorsToFetch)
        {
            try
            {
                var selectorsResponse = await ArtifactHttpClientErrorDetectionStrategy.ExecuteWithTimeoutAsync(
                    context,
                    "GetSelectors",
                    innerCts => _buildCacheHttpClient.GetSelectors(
                        cacheNamespace,
                        weakFingerprint,
                        maxSelectorsToFetch), CancellationToken.None);

                var selectorsToReturn = new List <SelectorAndContentHashListWithCacheMetadata>();
                foreach (
                    SelectorAndPossibleContentHashListResponse selectorAndPossible in selectorsResponse.SelectorsAndPossibleContentHashLists
                    )
                {
                    if (selectorAndPossible.ContentHashList != null)
                    {
                        DownloadUriCache.Instance.BulkAddDownloadUris(selectorAndPossible.ContentHashList.BlobDownloadUris);
                    }

                    selectorsToReturn.Add(
                        new SelectorAndContentHashListWithCacheMetadata(
                            selectorAndPossible.Selector,
                            selectorAndPossible.ContentHashList?.ContentHashListWithCacheMetadata));
                }

                return(new ObjectResult <IEnumerable <SelectorAndContentHashListWithCacheMetadata> >(selectorsToReturn));
            }
            catch (Exception ex)
            {
                return(new ObjectResult <IEnumerable <SelectorAndContentHashListWithCacheMetadata> >(ex));
            }
        }