diff --git a/client/client.go b/client/client.go index 116a1a4b2..886a9914a 100644 --- a/client/client.go +++ b/client/client.go @@ -239,7 +239,13 @@ func (c *httpClusterClient) Do(ctx context.Context, act httpAction) (*http.Respo resp, body, err = hc.Do(ctx, action) if err != nil { cerr.Errors = append(cerr.Errors, err) - if err == context.DeadlineExceeded || err == context.Canceled { + // mask previous errors with canceled error if the user explicitly canceled the request + if err == context.Canceled { + return nil, nil, context.Canceled + } + + // TODO: deal with deadline error when we improve the deadline handling. + if err == context.DeadlineExceeded { return nil, nil, cerr } continue diff --git a/client/client_test.go b/client/client_test.go index ecd6f56d0..c3e448e7f 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -364,7 +364,7 @@ func TestHTTPClusterClientDo(t *testing.T) { ), rand: rand.New(rand.NewSource(0)), }, - wantErr: &ClusterError{Errors: []error{context.Canceled}}, + wantErr: context.Canceled, }, // return err if there are no endpoints