private async Task <HttpResponseMessage> SendHttpRequestAsync(ExecuteHttpRequestMessage message)
        {
            HttpResponseMessage httpResponse = new HttpResponseMessage();

            try
            {
                var authRequest = await HttpAuthRequestFactory.Create(message.HttpRequest);

                SetHttpMethod(authRequest.HttpRequestMessage, message.HttpRequest.Method);
                AddRequestHeaders(authRequest.HttpRequestMessage, message.HttpRequest.RequestHeaders, message.HttpRequest.UserAgent);
                AddContentHeaders(authRequest.HttpRequestMessage, message.HttpRequest.RequestHeaders);

                var response = await SendAsync(authRequest.HttpRequestMessage, message.HttpRequest);

                await HandleSignOutsAsync(message.HttpRequest.AuthenticationConfig, authRequest.AuthResponse);

                return(response);
            }
            catch (Exception ex)
            {
                httpResponse.StatusCode = System.Net.HttpStatusCode.InternalServerError;
                httpResponse.Content    = new StringContent($"Exception: {ex.Message}. StackTrace: {ex.StackTrace}");
            }

            return(httpResponse);
        }
        private async Task HandleSignOutsAsync(HttpAuthenticationConfig authenticationConfig, AuthResponseBase authResponse)
        {
            switch (authenticationConfig.AuthenticationType)
            {
            case HttpAuthenticationType.None:
                break;

            case HttpAuthenticationType.OAuth20:
                await HttpAuthRequestFactory.SignOut((OAuth20AuthenticationConfig)authenticationConfig.AuthenticationOptions, (OAuth20AuthResponse)authResponse);

                break;

            default:
                break;
            }
        }