errgroup has a SetLimit function to control the max number of concurrent go routines running at once.