docs: function asyncMax() {
      var args = argsToArray(arguments), last = args.pop(), cmp = null;
      if (isFunction(last) || isString(last)) {
          cmp = last;
      } else {
          args.push(last);
      }
      return when.apply(null, args).chain(function (result) {
          return max.call(array, normalizeResult(result), cmp);
      });
  }