title: async waterfall not following order when mysql query
body: <p>I am trying to do a waterfall async but i don't get the expected output that i want. 
  Basically my waterfall works as expected if i use an array instead of the query 
  so i guess i am doing something wrong on the callback of the query but i don't know what.</p>
  
  <p>Code when it works with what i expect using array:</p>
  
  <pre><code>    function range(start, end) {
      var foo = [];
      for (var i = start; i &lt;= end; i++) {
          foo.push(i);
      }
      return foo;
  }
  users = range(1,2)
  obj = [1,2]; 
  async.forEachLimit(users, 1, function(user, userCallback){
      async.waterfall(
          [
              function(callback) { // query the data to get the category and specific number  of rows
              results = {sku_config:'A',img:'http//blabla',sku_config:'B',img:'http//bloblo'}
              callback(null, results);
  
  
              },
              function(obj,callback) {
                  async.eachSeries(obj, function (sku, callback) {
                      var url = sku.img;
                      var sku = sku.sku_config;
                      console.log("loop");
                              request.get(url, {encoding: null} , function(error, response, body) {
                                  console.log('request');
                              });
  
                      callback(null);
                  }, function(responsetoendofloop){
                          callback(null);
                  });
              },
          ],
          function (err) {
              console.log('Finish');
              userCallback(null);
          }
      );
  }, function(err){
      console.log("User For Loop Completed");
  });
  </code></pre>
  
  <p>output:</p>
  
  <pre><code>loop
  request
  loop
  request
  Finish
  loop
  request
  loop
  request
  Finish
  User For Loop Completed
  </code></pre>
  
  <p>But when i try to query the data with mysql here comes the problem
  code:</p>
  
  <pre><code>async.forEachLimit(users, 1, function(user, userCallback){
      async.waterfall(
          [
              function(callback) { // query the data to get the category and specific number  of rows
                  connection.query(query_sku, 
                  ['Fashion',1,2],
                      function(err, results, fields) {
                          if (err) 
                              throw err;
                   callback(null, results);
                  });
  
              },
              function(obj,callback) {
                  async.eachSeries(obj, function (sku, callback) {
                      var url = sku.img;
                      var sku = sku.sku_config;
                      console.log("loop");
                              request.get(url, {encoding: null} , function(error, response, body) {
                                  console.log('request');
                              });
  
                      callback(null);
                  }, function(responsetoendofloop){
                          callback(null);
                  });
              },
          ],
          function (err) {
              console.log('Finish');
              userCallback(null);
          }
      );
  }, function(err){
      console.log("User For Loop Completed");
  });
  </code></pre>
  
  <p>output:</p>
  
  <pre><code>loop
  loop
  Finish
  loop
  loop
  Finish
  User For Loop Completed
  request
  request
  request
  request
  </code></pre>
  
  <p>All the request gets executed at the end :( </p>
  
  <p>If you have idea on what i could fix.
  Thanks</p>