diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index 85a58552e..d51506996 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -5,6 +5,7 @@ ### New Features and Improvements ### Bug Fixes +fix: 1243 returns both resetErr and the request's err on retries.Halt ### Documentation diff --git a/httpclient/api_client.go b/httpclient/api_client.go index 96abf582c..415efd103 100644 --- a/httpclient/api_client.go +++ b/httpclient/api_client.go @@ -259,7 +259,9 @@ func (c *ApiClient) handleError(ctx context.Context, err error, body common.Requ return nil, retries.Halt(err) } if resetErr := body.Reset(); resetErr != nil { - return nil, retries.Halt(resetErr) + return nil, retries.Halt( + fmt.Errorf("%w, request error: %w", resetErr, err), + ) } return nil, retries.Continue(err) } diff --git a/httpclient/api_client_test.go b/httpclient/api_client_test.go index 49dfd8532..f4e5cfab7 100644 --- a/httpclient/api_client_test.go +++ b/httpclient/api_client_test.go @@ -601,6 +601,7 @@ func TestCannotRetryArbitraryReader(t *testing.T) { err := client.Do(context.Background(), "POST", "/a", WithRequestData(customReader{})) require.ErrorContains(t, err, "cannot reset reader of type httpclient.customReader") + require.ErrorContains(t, err, "http 429") } func TestRetryGetRequest(t *testing.T) {