示例#1
0
        private async Task <IResponse> DoRequest(IRequest request)
        {
            await ApplyAuthenticator(request).ConfigureAwait(false);

            _httpLogger?.OnRequest(request);
            IResponse response = await _httpClient.DoRequest(request).ConfigureAwait(false);

            _httpLogger?.OnResponse(response);
            ResponseReceived?.Invoke(this, response);
            if (_retryHandler != null)
            {
                response = await _retryHandler.HandleRetry(request, response, async (newRequest) =>
                {
                    await ApplyAuthenticator(request).ConfigureAwait(false);
                    var newResponse = await _httpClient.DoRequest(request).ConfigureAwait(false);
                    _httpLogger?.OnResponse(newResponse);
                    ResponseReceived?.Invoke(this, response);
                    return(newResponse);
                }).ConfigureAwait(false);
            }
            ProcessErrors(response);
            return(response);
        }