public async Task <ResultAndAccessCondition <SortedDictionary <string, SortedSet <string> > > > ReadLatestIndexedAsync() { var stopwatch = Stopwatch.StartNew(); var blobName = GetLatestIndexedBlobName(); var blobReference = Container.GetBlobReference(blobName); _logger.LogInformation("Reading the latest indexed owners from {BlobName}.", blobName); var builder = new PackageIdToOwnersBuilder(_logger); IAccessCondition accessCondition; try { using (var stream = await blobReference.OpenReadAsync(AccessCondition.GenerateEmptyCondition())) { accessCondition = AccessConditionWrapper.GenerateIfMatchCondition(blobReference.ETag); ReadStream(stream, builder.Add); } } catch (StorageException ex) when(ex.RequestInformation.HttpStatusCode == (int)HttpStatusCode.NotFound) { accessCondition = AccessConditionWrapper.GenerateIfNotExistsCondition(); _logger.LogInformation("The blob {BlobName} does not exist.", blobName); } var output = new ResultAndAccessCondition <SortedDictionary <string, SortedSet <string> > >( builder.GetResult(), accessCondition); stopwatch.Stop(); _telemetryService.TrackReadLatestIndexedOwners(output.Result.Count, stopwatch.Elapsed); return(output); }