From 80f455ae774f3defca946edcc6ac6c1b9a0f7b4d Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Sun, 7 Sep 2025 23:50:23 -0500 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20DRY?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- errgroup.go | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/errgroup.go b/errgroup.go index c52cbb9..1142170 100644 --- a/errgroup.go +++ b/errgroup.go @@ -59,6 +59,18 @@ func (g *Group) error() error { return v.(error) } +func (g *Group) setError(err error) { + if err == nil { + return + } + g.errOnce.Do(func() { + g.err.Store(err) + if g.cancel != nil { + g.cancel(err) + } + }) +} + // Wait blocks until all function calls from the Go method have returned, then // returns the first non-nil error (if any) from them. func (g *Group) Wait() error { @@ -102,14 +114,7 @@ func (g *Group) Go(f func() error) { // that prevents the Wait call from being reached. // See #53757, #74275, #74304, #74306. - if err := f(); err != nil { - g.errOnce.Do(func() { - g.err.Store(err) - if g.cancel != nil { - g.cancel(err) - } - }) - } + g.setError(f()) }() } @@ -133,15 +138,7 @@ func (g *Group) TryGo(f func() error) bool { g.wg.Add(1) go func() { defer g.done() - - if err := f(); err != nil { - g.errOnce.Do(func() { - g.err.Store(err) - if g.cancel != nil { - g.cancel(err) - } - }) - } + g.setError(f()) }() return true }