deferError = (specifier, error) => {
    // strictlyRequired is populated with imports declared by modules whose parser is not using heuristics to figure
    // out imports. We're guaranteed they're reachable. If the same module is imported and required, it will not
    // defer, because importing from esm makes it strictly required.
    // Note that ultimately a situation may arise, with exit modules, where the module never reaches importHook but
    // its imports do. In that case the notion of strictly required is no longer boolean, it's true,false,noidea.
    if (strictlyRequiredForCompartment(packageLocation).has(specifier)) {
      throw error;
    }
    // Return a place-holder that'd throw an error if executed
    // This allows cjs parser to more eagerly find calls to require
    // - if parser identified a require call that's a local function, execute will never be called
    // - if actual required module is missing, the error will happen anyway - at execution time
    const record = freeze({
      imports: [],
      exports: [],
      execute: () => {
        throw error;
      },
    });
    packageSources[specifier] = {
      deferredError: error.message,
    };

    return record;
  }
@param {string} specifier
@param {Error} error - error to throw on execute
@returns {StaticModuleType}