Many error classes aren't likely to succeed when you try again and so they probably shouldn't be retried by default.
Errors I don't think will typically work if retried:
401 - BadCredentialsError
402 - PaymentRequiredError
413 - RequestEntityTooLargeError
400 - BadRequestError
422 - UnprocessableEntityError
429 - TooManyRequestsError
Errors which may work if retried:
500 - InternalServerError
503 - ServiceUnavailableError
This is based on the errors handled by StatusCodeSender, as you can see it groups neatly into 400 errors (client errors) and 500 errors (server errors).
This PR only retries anything less than 500.
Depending on your API compatibility stance this could be a big backwards compatibility change but it's in line with typical usage of HTTP.
Many error classes aren't likely to succeed when you try again and so they probably shouldn't be retried by default.
Errors I don't think will typically work if retried:
Errors which may work if retried:
This is based on the errors handled by
StatusCodeSender
, as you can see it groups neatly into 400 errors (client errors) and 500 errors (server errors).This PR only retries anything less than 500.
Depending on your API compatibility stance this could be a big backwards compatibility change but it's in line with typical usage of HTTP.