protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { if (!_tokenCache.TryGetToken(out var token)) { token = await _tokenProviderClient.GetTokenAsync(); _tokenCache.StoreToken(token); } request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token); var retryCount = 0; HttpResponseMessage response; do { response = await base.SendAsync(request, cancellationToken); }while (response.StatusCode == HttpStatusCode.Unauthorized && retryCount++ < 1); return(response); }