Skip to content

Commit 102ff54

Browse files
committed
fix: client prompt return on context cancellation
Signed-off-by: Umegbewe Nwebedu <[email protected]>
1 parent bf9ab7c commit 102ff54

File tree

1 file changed

+8
-16
lines changed

1 file changed

+8
-16
lines changed

api/client.go

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -131,34 +131,26 @@ func (c *httpClient) Do(ctx context.Context, req *http.Request) (*http.Response,
131131
req = req.WithContext(ctx)
132132
}
133133
resp, err := c.client.Do(req)
134-
defer func() {
135-
if resp != nil {
136-
resp.Body.Close()
137-
}
138-
}()
139-
140134
if err != nil {
141135
return nil, nil, err
142136
}
143137

144138
var body []byte
145-
done := make(chan struct{})
139+
done := make(chan error, 1)
146140
go func() {
147141
var buf bytes.Buffer
148-
_, err = buf.ReadFrom(resp.Body)
142+
_, err := buf.ReadFrom(resp.Body)
149143
body = buf.Bytes()
150-
close(done)
144+
done <- err
151145
}()
152146

153147
select {
154148
case <-ctx.Done():
149+
resp.Body.Close()
155150
<-done
156-
err = resp.Body.Close()
157-
if err == nil {
158-
err = ctx.Err()
159-
}
160-
case <-done:
151+
return resp, nil, ctx.Err()
152+
case err = <-done:
153+
resp.Body.Close()
154+
return resp, body, err
161155
}
162-
163-
return resp, body, err
164156
}

0 commit comments

Comments
 (0)