public async Task <CreateAuthorizationResponse> AuthorizeAsync(CreateAuthorizationRequest request,
                                                                       CancellationToken cancellationToken = default(CancellationToken))
        {
            using (var httpRequest = CreateJsonHttpRequest(HttpMethod.Post, "v1/transactions", request))
                using (var httpResponse = await HttpClient.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead, cancellationToken))
                {
                    var stream = await httpResponse.Content.ReadAsStreamAsync();

                    if (httpResponse.IsSuccessStatusCode)
                    {
                        return(DeserializeJsonFromStream <CreateAuthorizationResponse>(stream));
                    }

                    var httpError = new Gate2AllHttpException
                    {
                        StatusCode = (int)httpResponse.StatusCode,
                        Content    = await StreamToStringAsync(stream)
                    };

                    if (AvoidThrowingExceptions)
                    {
                        return new CreateAuthorizationResponse {
                                   HttpError = httpError
                        }
                    }
                    ;

                    throw httpError;
                }
        }
        public CreateAuthorizationResponse Authorize(CreateAuthorizationRequest request)
        {
#if !NETSTANDARD
            return(AsyncContext.Run(async() => await AuthorizeAsync(request)));
#else
            throw new NotSupportedException();
            #endif
        }