diff --git a/client/v3/watch.go b/client/v3/watch.go index a46f98b8e28..8e19f87e2f1 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -391,14 +391,11 @@ func (w *watcher) Close() (err error) { w.streams = nil w.mu.Unlock() for _, wgs := range streams { - if werr := wgs.close(); werr != nil { - err = werr + // Consider context.Canceled as a successful close + if werr := wgs.close(); werr != nil && !errors.Is(err, context.Canceled) { + err = errors.Join(err, werr) } } - // Consider context.Canceled as a successful close - if errors.Is(err, context.Canceled) { - err = nil - } return err }