define(normalizedName, source, {address, metadata} = {}) {
    return this.internalLoader_.define(normalizedName, source, address,
                                       metadata);
  }
Asynchronously install a new module under `name` from the `source` code.
All dependencies are installed in the registry.
@param {string} normalizedName
@param {string} source, module code
@param {Object|undefined} May contain .address and .metadata. Pass to hooks
@return {Promise} fulfilled with undefined.