errgroup
Also written: golang.org/x/sync/errgroup, errgroup.WithContext
A helper that runs several goroutines together and waits for them all. If one returns an error, the shared context is canceled, as when the server goroutine fails and the shutdown goroutine should stop too.