compartmentImport = async fullSpecifier => {
      if (typeof resolveHook !== 'function') {
        throw TypeError(
          `Compartment does not support dynamic import: no configured resolveHook for compartment ${q(name)}`,
        );
      }
      await load(privateFields, moduleAliases, compartment, fullSpecifier);
      const { execute, exportsProxy } = link(
        privateFields,
        moduleAliases,
        compartment,
        fullSpecifier,
      );
      execute();
      return exportsProxy;
    }
In support dynamic import in a module source loaded by this compartment,
like `await import(importSpecifier)`, induces this compartment to import
a module, returning a promise for the resulting module exports
namespace.
Unlike `compartment.import`, never creates a box object for the
namespace as that behavior is deprecated and inconsistent with the
standard behavior of dynamic import.
Obliges the caller to resolve import specifiers to their corresponding
full specifier.
That is, every module must have its own dynamic import function that
closes over the surrounding module's full module specifier and calls
through to this function.
@param {string} fullSpecifier - A full specifier is a key in the
compartment's module memo.
The method `compartment.import` accepts a full specifier, but dynamic
import accepts an import specifier and resolves it to a full specifier
relative to the calling module's full specifier.
@returns {Promise<ModuleExportsNamespace>}