title: Async each function
body: <p>I'm trying to understand async <code>each(coll, iteratee, callback)</code> function to execute a function in parallel for each item of an array. From the async docs I understand that callback will be executed only once (when iteratee function will be executed for each item of the array).</p>
  <p>And in the case of an error in the iteratee function, calling <code>callback('some error message')</code> will immediately call the callback function with error message.</p>
  <p>Below is an example from the async docs for each function</p>
  <h1>each(coll, iteratee, callback)</h1>
  <pre><code>// assuming openFiles is an array of file names
  async.each(openFiles, function(file, callback) {
  
      // Perform operation on file here.
      console.log('Processing file ' + file);
  
      if( file.length &gt; 32 ) {
        console.log('This file name is too long');
        callback('File name too long');
      } else {
        // Do work to process file here
        console.log('File processed');
        callback();
      }
  }, function(err) {
      // if any of the file processing produced an error, err would equal that error
      if( err ) {
        // One of the iterations produced an error.
        // All processing will now stop.
        console.log('A file failed to process');
      } else {
        console.log('All files have been processed successfully');
      }
  });
  </code></pre>
  <p>What I'm not able to understand is, what does calling callback() without argument does, it looks very strange to me that we call callback() with no argument when there is no error in the iteratee function. What does calling <code>callback() or callback(null)</code> do in case of no errors.</p>
  <p>Can't we just remove those <code>callback() or callback(null)</code>, when we actually mean to call the callback only once (when iteratee function is executed for all the elements of the array) rather than for each item of the array.</p>