| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 
							- var iterate    = require('./lib/iterate.js')
 
-   , initState  = require('./lib/state.js')
 
-   , terminator = require('./lib/terminator.js')
 
-   ;
 
- // Public API
 
- module.exports = parallel;
 
- /**
 
-  * Runs iterator over provided array elements in parallel
 
-  *
 
-  * @param   {array|object} list - array or object (named list) to iterate over
 
-  * @param   {function} iterator - iterator to run
 
-  * @param   {function} callback - invoked when all elements processed
 
-  * @returns {function} - jobs terminator
 
-  */
 
- function parallel(list, iterator, callback)
 
- {
 
-   var state = initState(list);
 
-   while (state.index < (state['keyedList'] || list).length)
 
-   {
 
-     iterate(list, iterator, state, function(error, result)
 
-     {
 
-       if (error)
 
-       {
 
-         callback(error, result);
 
-         return;
 
-       }
 
-       // looks like it's the last one
 
-       if (Object.keys(state.jobs).length === 0)
 
-       {
 
-         callback(null, state.results);
 
-         return;
 
-       }
 
-     });
 
-     state.index++;
 
-   }
 
-   return terminator.bind(state, callback);
 
- }
 
 
  |