code: func AggregateGoroutines(funcs ...func() error) Aggregate {
  	errChan := make(chan error, len(funcs))
  	for _, f := range funcs {
  		go func(f func() error) { errChan <- f() }(f)
  	}
  	errs := make([]error, 0)
  	for i := 0; i < cap(errChan); i++ {
  		if err := <-errChan; err != nil {
  			errs = append(errs, err)
  		}
  	}
  	return NewAggregate(errs)
  }
docs: // AggregateGoroutines runs the provided functions in parallel, stuffing all
  // non-nil errors into the returned Aggregate.
  // Returns nil if all the functions complete successfully.