code: function (subtype, context, done) {
      var types = this.types
        , loaded = {};
      this.allExtensions(function (type, id, plugin, next) {
        if (!plugin[subtype]) return next();
        if ('string' === typeof plugin[subtype]) {
          try {
            plugin[subtype] = require(path.resolve(path.join(plugin.dir, plugin[subtype])));
          } catch (e) {
            // eslint-disable-next-line no-console
            console.log('failed to load plugin', id, e.message, e.stack);
            e.message += '; error loading plugin ' + id;
            return next(e);
          }
        }
  
        if (!loaded[type]) loaded[type] = {};
        if (!types[type][subtype]) {
          loaded[type][id] = plugin[subtype];
          return next();
        }
        types[type][subtype](id, plugin[subtype], plugin, context, function (err, initialized) {
          loaded[type][id] = initialized;
          next(err);
        });
      }, function (err) {
        done(err, loaded);
      });
    }
docs: initExtensions(subtype, context, done) -> done(err, {type: {id: retval, ...}, ...}) For each plugin this.types[type][subtype](id, plugin, context, next(err, retval))