private async Task GetEntityImplAsync()

in src/Microsoft.Azure.NotificationHubs/NotificationHubClient.cs [3289:3320]


        private async Task<TEntity> GetEntityImplAsync<TEntity>(string entityCollection, string entityId, CancellationToken cancellationToken, bool throwIfNotFound = true) where TEntity : EntityDescription
        {
            var requestUri = GetGenericRequestUriBuilder();
            requestUri.Path += $"{entityCollection}/{entityId}";

            HttpStatusCode[] successfulResponseStatuses;
            if (throwIfNotFound)
            {
                successfulResponseStatuses = new[] { HttpStatusCode.OK };
            }
            else
            {
                successfulResponseStatuses = new[] { HttpStatusCode.OK, HttpStatusCode.NotFound };
            }

            return await _retryPolicy.RunOperation(async (ct) =>
            {
                using (var request = CreateHttpRequest(HttpMethod.Get, requestUri.Uri, out var trackingId))
                {
                    using (var response = await SendRequestAsync(request, trackingId, successfulResponseStatuses, ct).ConfigureAwait(false))
                    {
                        if (response.StatusCode == HttpStatusCode.NotFound)
                            return null;

                        using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
                        {
                            return await ReadEntityAsync<TEntity>(responseStream).ConfigureAwait(false);
                        }
                    }
                }
            }, cancellationToken);
        }