code: function require() {
  
        /* Edge case, one only parameter, we don't return an array */
        if ((arguments.length == 1) && (typeof(arguments[0]) == 'string')) {
          return inject([arguments[0]], function(instance) {
            return instance;
          });
        }
  
        /* Inject a fake callback function returning an array */
        return inject(arguments, function() {
          var result = [];
          for (var i = 0; i < arguments.length; i ++) {
            result.push(arguments[i]);
          }
          return result;
        });
        return result;
      }
docs: Require instances for the specified module(s).
  
  @instance
  @function
  @memberof Esquire
  @example -
  var esq = new Esquire();
  
  esq.require(['fooModule', 'barModule'])
  .then(function(fromArray) {
  // fromArray[0] will be an instance of 'fooModule'
  // fromArray[1] will be an instance of 'barModule'
  });
  
  @example Injection with a single `string` argument
  esq.require('bazModule')
  .then(function(fromString) {
  // 'fromString' will be an instance of 'bazModule'
  });
  
  @example Injection with a number of different arguments
  esq.require('abcModule', 'xyzModule')
  .then(function(fromArgs) {
  // fromArgs[0] will be an instance of 'abcModule'
  // fromArgs[1] will be an instance of 'xyzModule'
  });
  
  @param {string[]|string} dependencies - An array of required module names
  (or a single module name) whose
  instance are to be returned.
  @return {Promise[]|Promise} An array of {@link Promise}s eventually
  resolving to the required module instances,
  or a single {@link Promise} (if this method
  was called with a single `string` parameter).