@@ -28,6 +28,10 @@ struct HTTPBackend <: AbstractBackend
2828 http_options:: AbstractDict{Symbol,<:Any}
2929end
3030
31+ function statuserror(status, resp)
32+ return HTTP. StatusError(status, resp. request. method, resp. request. target, resp)
33+ end
34+
3135function HTTPBackend(; kwargs... )
3236 return if isempty(kwargs)
3337 HTTPBackend(LittleDict{Symbol,Any}())
@@ -129,7 +133,7 @@ function submit_request(aws::AbstractAWSConfig, request::Request; return_headers
129133 if HTTP. header(response, " Location" ) != " "
130134 request. url = HTTP. header(response, " Location" )
131135 else
132- e = HTTP . StatusError (response. status, response)
136+ e = statuserror (response. status, response)
133137 throw(AWSException(e, stream))
134138 end
135139 end
200204function _http_request(http_backend:: HTTPBackend , request:: Request , response_stream:: IO )
201205 http_options = merge(http_backend. http_options, request. http_options)
202206
203- # HTTP options such as `status_exception` need to be used when creating the stack
204- http_stack = HTTP. stack(;
205- redirect= false , retry= false , aws_authorization= false , http_options...
206- )
207-
208207 local buffer
209208 local response
210209
@@ -219,12 +218,12 @@ function _http_request(http_backend::HTTPBackend, request::Request, response_str
219218 buffer = Base. BufferStream()
220219
221220 response = @mock HTTP. request(
222- http_stack,
223221 request. request_method,
224222 HTTP. URI(request. url),
225223 HTTP. mkheaders(request. headers),
226224 request. content;
227- require_ssl_verification= false ,
225+ redirect= false ,
226+ retry= false ,
228227 response_stream= buffer,
229228 http_options... ,
230229 )
@@ -235,13 +234,8 @@ function _http_request(http_backend::HTTPBackend, request::Request, response_str
235234 end
236235
237236 check = function (s, e)
238- # `Base.IOError` is needed because HTTP.jl can often have errors that aren't
239- # caught and wrapped in an `HTTP.IOError`
240- # https://github.com/JuliaWeb/HTTP.jl/issues/382
241- return isa(e, Sockets. DNSError) ||
242- isa(e, HTTP. ParseError) ||
243- isa(e, HTTP. IOError) ||
244- isa(e, Base. IOError) ||
237+ return isa(e, HTTP. ConnectError) ||
238+ isa(e, HTTP. RequestError) ||
245239 (isa(e, HTTP. StatusError) && _http_status(e) >= 500 )
246240 end
247241
0 commit comments