Fix generic error parsing to handle 4xx responses #3506
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Services sometimes return generic HTML error responses instead of their modeled protocol format, and this may also occur when requests pass through proxies. Currently, botocore handles this gracefully for 5XX errors by detecting and processing these generic responses appropriately. However, 4XX errors are not handled the same way. For example, in corner cases where the input to a request is too large (HTTP 413) or otherwise invalid, some AWS services may respond with a generic HTTP response instead of their service's modeled protocol. This change extends the same handling to 4XX errors, ensuring customers receive informative error messages for both 4XX and 5XX generic responses, rather than unhelpful parsing errors.