code: function (manifestURL, manifest, creator, policy) {
    this.api = policy.api;
    this.policy = policy;
    this.resource = policy.resource;
    this.debug = policy.debug;
  
    this.config = {};
  
    this.id = manifestURL + Math.random();
    this.manifestId = manifestURL;
    this.manifest = manifest;
    this.lineage = [this.manifestId].concat(creator);
  
    this.quiet = this.manifest.quiet || false;
  
    this.externalPortMap = {};
    this.internalPortMap = {};
    this.dependantChannels = [];
    // Map from dependency names to target URLs, from this module's manifest.
    this.dependencyUrls = {};
    // Map from depenency names to arrays of pending messages.  Once a
    // dependency is fully started, the pending messages will be drained and its
    // entry in this map will be deleted.
    this.pendingMessages = {};
    this.started = false;
    this.failed = false;
  
    util.handleEvents(this);
  }
docs: The external Port face of a module on a hub.
  @class Module
  @extends Port
  @param {String} manifestURL The manifest this module loads.
  @param {String[]} creator The lineage of creation for this module.
  @param {Policy} Policy The policy loader for dependencies.
  @constructor