code: function loadExternalModule(parentId, id) {
  
          //if parent id is a consumer, i.e. was registered with a prefix,
          //strip the prefix off since that's not part of the module name
          parentId = _.includes(parentId, '.') ? parentId.substring(parentId.indexOf('.') + 1) : parentId;
  
          var mod = subRequire(id, parentId);
          moduleMap[id] = mod;
          dependencyMap[id] = normalizeServiceNames(di.getParamNames(mod.init));
      }
docs: map of id to timers which we use to ensure async services load in a reasonable time 
  Load a module with the given module name/id.
  A normal require call is used under the covers, so it assume the module is available
  somewhere in the node load path.
  
  In the cases that we're loading a service module that's a dependency of another external service module,
  we have to do some magic with the require cache to properly load it.
  @param id