errgroup.WithContext یک group و یک context مشتقشده برمیگرداند. g.Go(fn) یک goroutine شروع میکند؛ g.Wait() تا پایان همه بلاک میکند و اولین خطای غیر nil را برمیگرداند. g.SetLimit(n) هم همزمانی را محدود میکند، بدون اینکه worker pool دستی بنویسید.
errgroup
ابزاری از `golang.org/x/sync` که چند goroutine را با هم اجرا میکند و با اولین خطا بقیه را لغو میکند.