in replica/replicator.go [259:293]
func (r *Replicator) parallel(rwValue int, copts *callOptions, fopts *forward.Options,
opts *Options) ([]Response, []error) {
var responses struct {
successes []Response
errors []error
sync.Mutex
}
var wg sync.WaitGroup
for _, dest := range copts.Dests {
wg.Add(1)
go func(dest string) {
res, err := r.forwardRequest(dest, copts, fopts)
if err != nil {
responses.Lock()
responses.errors = append(responses.errors, err)
responses.Unlock()
wg.Done()
return
}
responses.Lock()
responses.successes = append(responses.successes, res)
responses.Unlock()
wg.Done()
}(dest)
}
wg.Wait()
return responses.successes, responses.errors
}