Style nit: We should only have one `var` statement per closure. It is better to leave things undefined until they are used. In this case I imagine a block like this at the top of this closure:

```javascript
var parallelLimitFunc, stopOnFailure, getHostParams;

parallelLimitFunc = options && options.parallelLimitFunc || null;
stopOnFailure = !!parallelLimitFunc; // We only actually care if stopOnFailure contains the truthiness of parallelLimitFunc
getHostParams = options && options.getHostParams ? options.getHostParams : function(hostObj) {
 ...
};
```