package dispatch import ( "context" "errors" ) func Shutdown(ctx context.Context, pools ...*Pool) error { // Close admission on every pool before waiting for any worker to drain. for _, pool := range pools { if pool != nil { pool.StopAdmission() } } var result error // Share one deadline across the drain so total shutdown time stays bounded. for _, pool := range pools { if pool != nil { result = errors.Join(result, pool.Shutdown(ctx)) } } return result }