index.js
function init(constructor, name, options) {
  constructor = ('string' === is(constructor)) ? require(constructor) : constructor;

  //
  // We really want to have a function/class here. Make sure that we can
  // construct it using `new constructor`
  //
  if (!constructor.prototype) return;

  name = constructor.prototype.name || name || constructor.name;
  if (options.name) name = options.name;

  //
  // Sets the name on the prototype to a string.
  //
  if ('name' in constructor.prototype) {
    constructor.prototype.name = name.toString();
  }

  return constructor;
}
function init(constructor, name, options) {
  constructor = ('string' === is(constructor)) ? require(constructor) : constructor;

  //
  // We really want to have a function/class here. Make sure that we can
  // construct it using `new constructor`
  //
  if (!constructor.prototype) return;

  name = constructor.prototype.name || name || constructor.name;
  if (options.name) name = options.name;

  //
  // Sets the name on the prototype to a string.
  //
  if ('name' in constructor.prototype) {
    constructor.prototype.name = name.toString();
  }

  return constructor;
}
It's not required to supply resolve with instances, we can just
automatically require them if they are using the:

module.exports = function Constructor() {};

@param {String} constructor
@param {String} name Optional identifier for the constructor.
@returns {Object} initialized object
@api private