Prevents an error when using multiple targets

Leverages async.each.

The error you would get is "A task's completion callback has fired
when the task was already in a completed state".

It was caused by next() being fired multiple times for each target.