title: async.each callback inside async.waterfall not triggered
body: <p>I'm trying to achieve the following:</p>
  
  <p><strong>Please consider running this in jasmine test framework that does not support async/await yet</strong></p>
  
  <p>async.waterfall calls a function that has async.each to trigger the creation of schemas and tables. The steps in async waterfall have to be executed sequentially i.e., schemas have to be created before creating tables. The problem I'm facing is that the first call to create schemas is executed but the callback is never returned to the async.waterfall. So, the next step in async.waterfall is never executed. </p>
  
  <p>Timeline or Flow:<br>
  <strong>driverFunction</strong> (async.waterfall) invokes the <strong>createFunction</strong>.<br>
  The <strong>createFunction</strong> (asyncCreateSchema etc.,) function invokes the <strong>doSomething</strong> for each file in the array.<br>
  <strong>doSomething</strong> executes a jar file and returns a success or an error.</p>
  
  <p>Here's my code:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>'use strict'
  let async = require('async');
  
  
  function doSomething(file, done) {
    console.log(file);
    return done(null, true);
  }
  
  function asyncCreateSchema(files, done) {
    async.each(
      files,
      function(file, callback) {
        if (file.startsWith('schema')) {
          doSomething(file, callback);
        }
        else{
          callback();
        }
      },
      function(err) {
        if (err) {
          console.log(err);
        }
        console.log('create schema done');
      });
  }
  
  function asyncCreateTables(files, done) {
    async.each(
      files,
      function(file, callback) {
        if (file.startsWith('table')) {
          doSomething(file, callback);
        }
        else{
          callback();
        }
      },
      function(err) {
        if (err) {
          console.log(err);
        }
        console.log('create schema done');
      });
  }
  
  var files = ['schema.json', 'schema_1.json', 'table.json'];
  
  async.waterfall([
      next =&gt; asyncCreateSchema(files, next),
      (nil, next) =&gt; asyncCreateTables(files, next),
  
    ],
    function(err, res) {
      if (err) {
        throw new Error("Setup error: " + err.message);
      } else {
        console.log(res);
      }
    }
  );</code></pre>
  </div>
  </div>
  </p>
  
  <p>What am I doing wrong here? Please explain the flow of callback functions in this scenario using the async npm package.</p>