code: function resolveGlobAsync(patterns, options, done) {
    var opts = extend(true, {}, defaultOptions, options);
  
    // Relative patterns are matched against the current working directory.
    var globIterator = function(pattern, callback) {
      glob(pattern, opts, function(err, globbedFiles) {
        if (isArray(globbedFiles) && globbedFiles.length && !err) {
          callback(null, globbedFiles);
        }
        else {
          console.error('The glob pattern ' + JSON.stringify(pattern) + ' did not match any files!');
          callback(null, []);
        }
      });
    };
    async.concat(patterns, globIterator, function(err, files) {
      if (err) {
        done(err);
        return;
      }
      // Get rid of any duplicates and sort it
      var _cwd = opts.cwd || process.cwd();
      var polishedList = prependAll(unique(omitDirs(files)), _cwd).sort();
      done(null, polishedList);
    });
  }
docs: Public methods