docs: function find(scanDirs, extensions, ignore, callback) {
    var result = [];
    var activeCalls = 0;
  
    function readdirRecursive(curDir) {
      activeCalls++;
      fs.readdir(curDir, function(err, names) {
        activeCalls--;
        if (!names) {
          return;
        }
  
        for (var i = 0; i < names.length; i++) {
          names[i] = path.join(curDir, names[i]);
        }
  
        names.forEach(function(curFile) {
          if (ignore && ignore(curFile)) {
            return;
          }
          activeCalls++;
  
          fs.lstat(curFile, function(err, stat) {
            activeCalls--;
  
            if (!err && stat) {
              if (stat.isDirectory() || stat.isSymbolicLink()) {
                readdirRecursive(curFile);
              } else {
                var ext = path.extname(curFile);
                if (extensions.indexOf(ext) !== -1) {
                  result.push([curFile, stat.mtime.getTime()]);
                }
              }
            }
            if (activeCalls === 0) {
              callback(result);
            }
          });
        });
  
        if (activeCalls === 0) {
          callback(result);
        }
      });
    }
  
    scanDirs.forEach(readdirRecursive);
  }