From ec4ca5e6f2bb4dbfda44b312997d03d5fb86def0 Mon Sep 17 00:00:00 2001 From: Nic Manoogian Date: Mon, 31 Oct 2022 10:23:14 -0400 Subject: [PATCH] Add timeout error retry handling --- doppler/api.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doppler/api.go b/doppler/api.go index 23dc2f4..845317b 100644 --- a/doppler/api.go +++ b/doppler/api.go @@ -9,6 +9,7 @@ import ( "fmt" "io" "io/ioutil" + "net" "net/http" "strconv" "strings" @@ -129,7 +130,12 @@ func (client APIClient) PerformRequest(req *http.Request, params []QueryParam) ( r, err := httpClient.Do(req) if err != nil { - return nil, &APIError{Err: err, Message: "Unable to load response"} + var retryAfter *time.Duration + if e, ok := err.(net.Error); ok && e.Timeout() { + retryAfter = getSecondsDuration(1) + } + + return nil, &APIError{Err: err, Message: "Unable to load response", RetryAfter: retryAfter} } defer r.Body.Close()