title: node.js: How asynchronous are Async loops really?
body: <p>I want to iterate an array asynchronously to unblock the execution. I'm using caolan/async to achieve that. When testing this code:</p>
  
  <pre><code>var ASync = require('async');
  
  var arr = [];
  for (var i = 0; i&lt; 10; i++) {
      arr[i] = i;
  }
  
  var buf = "howdy";
  ASync.forEach(arr, function(item, callback) {
      buf += item;
      callback();
  }, function(err) {
      console.log(buf); // in the end
  });
  buf += "finished";
  </code></pre>
  
  <p>it shows this result:</p>
  
  <pre><code>howdy0123456789
  </code></pre>
  
  <p>I would assume it <strong>should</strong> show</p>
  
  <pre><code>howdyfinished0123456789
  </code></pre>
  
  <p>since I expect the Async lib to defer the execution. But why it isn't?</p>