code: function moduleLink(id, setters, key) {
    utils.setESModule(this.exports);
    Entry.getOrCreate(this.id, this);
  
    var absChildId = this.resolve(id);
    var childEntry = Entry.getOrCreate(absChildId);
  
    if (utils.isObject(setters)) {
      childEntry.addSetters(this, setters, key);
    }
  
    var exports = this.require(absChildId);
  
    if (childEntry.module === null) {
      childEntry.module = {
        id: absChildId,
        exports: exports
      };
    }
  
    childEntry.runSetters();
  }
docs: Calling module.link(id, setters) resolves the given ID using module.resolve(id), which should return a canonical absolute module identifier string (like require.resolve); then creates an Entry object for the child module and evaluates its code (if this is the first time it has been imported) by calling module.require(id). Finally, the provided setter functions will be called with values exported by the module, possibly multiple times when/if those exported values change. The module.link name is intended to evoke the "liveness" of the exported bindings, since we are subscribing to all future exports of the child module, not just taking a snapshot of its current exports.