System.Net.Http.HttpClient.FinishSendAsyncBuffered C# (CSharp) Method

FinishSendAsyncBuffered() private method

private FinishSendAsyncBuffered ( Task sendTask, HttpRequestMessage request, CancellationTokenSource cts, bool disposeCts ) : Task
sendTask Task
request HttpRequestMessage
cts System.Threading.CancellationTokenSource
disposeCts bool
return Task
        private async Task<HttpResponseMessage> FinishSendAsyncBuffered(
            Task<HttpResponseMessage> sendTask, HttpRequestMessage request, CancellationTokenSource cts, bool disposeCts)
        {
            HttpResponseMessage response = null;
            try
            {
                // Wait for the send request to complete, getting back the response.
                response = await sendTask.ConfigureAwait(false);
                if (response == null)
                {
                    throw new InvalidOperationException(SR.net_http_handler_noresponse);
                }

                // Buffer the response content if we've been asked to and we have a Content to buffer.
                if (response.Content != null)
                {
                    await response.Content.LoadIntoBufferAsync(_maxResponseContentBufferSize).ConfigureAwait(false);
                }

                if (NetEventSource.IsEnabled) NetEventSource.ClientSendCompleted(this, response, request);
                return response;
            }
            catch (Exception e)
            {
                response?.Dispose();
                HandleFinishSendAsyncError(e, cts);
                throw;
            }
            finally
            {
                HandleFinishSendAsyncCleanup(request, cts, disposeCts);
            }
        }