System.Net.Http.OwinHttpMessageHandler.SendAsync C# (CSharp) Метод

SendAsync() защищенный Метод

protected SendAsync ( HttpRequestMessage request, CancellationToken cancellationToken ) : Task
request HttpRequestMessage
cancellationToken System.Threading.CancellationToken
Результат Task
        protected override async Task<HttpResponseMessage> SendAsync(
            HttpRequestMessage request,
            CancellationToken cancellationToken)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            _operationStarted = true;

            var response = await SendInternalAsync(request, cancellationToken).NotOnCapturedContext();

            var redirectCount = 0;
            var statusCode = (int)response.StatusCode;

            while (_allowAutoRedirect && 
                (IsRedirectToGet(statusCode) || 
                IsBodylessRequest(request) && statusCode == 307))
            {
                if(redirectCount >= _autoRedirectLimit)
                {
                    throw new InvalidOperationException($"Too many redirects. Limit = {redirectCount}");
                }
                var location = response.Headers.Location;
                if (!location.IsAbsoluteUri)
                {
                    location = new Uri(response.RequestMessage.RequestUri, location);
                }

                var redirectMethod = IsRedirectToGet(statusCode) ? HttpMethod.Get : request.Method;
                request.RequestUri = location;
                request.Method = redirectMethod;
                request.Headers.Authorization = null;
                CheckSetCookie(request, response);

                response = await SendInternalAsync(request, cancellationToken).NotOnCapturedContext();

                statusCode = (int) response.StatusCode;
                redirectCount++;
            }
            return response;
        }