| browser.js | 
           | 
          0 | 
        
        
          | empty_FIXTURE.js | 
           | 
          181 | 
        
        
          | eval-rqstd-abrupt-err-type_FIXTURE.js | 
           | 
          199 | 
        
        
          | eval-rqstd-abrupt-err-uri_FIXTURE.js | 
           | 
          198 | 
        
        
          | instn-iee-err-ambiguous-1_FIXTURE.js | 
           | 
          190 | 
        
        
          | instn-iee-err-ambiguous-2_FIXTURE.js | 
           | 
          190 | 
        
        
          | instn-iee-err-ambiguous-export_FIXTURE.js | 
           | 
          234 | 
        
        
          | instn-iee-err-ambiguous_FIXTURE.js | 
           | 
          288 | 
        
        
          | instn-iee-err-circular-1_FIXTURE.js | 
           | 
          235 | 
        
        
          | instn-iee-err-circular-2_FIXTURE.js | 
           | 
          235 | 
        
        
          | nested-arrow-import-catch-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested arrow)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1502 | 
        
        
          | nested-arrow-import-catch-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested arrow)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1499 | 
        
        
          | nested-arrow-import-catch-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested arrow)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1639 | 
        
        
          | nested-arrow-import-catch-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested arrow)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1414 | 
        
        
          | nested-arrow-import-catch-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested arrow)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2088 | 
        
        
          | nested-arrow-import-catch-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested arrow)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2489 | 
        
        
          | nested-arrow-import-catch-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested arrow)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2290 | 
        
        
          | nested-arrow-import-catch-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested arrow)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2597 | 
        
        
          | nested-arrow-import-catch-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested arrow)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2484 | 
        
        
          | nested-arrow-import-catch-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested arrow)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1864 | 
        
        
          | nested-arrow-import-catch-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested arrow)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1901 | 
        
        
          | nested-async-arrow-function-await-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async arrow function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1553 | 
        
        
          | nested-async-arrow-function-await-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async arrow function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1550 | 
        
        
          | nested-async-arrow-function-await-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested in async arrow function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1690 | 
        
        
          | nested-async-arrow-function-await-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested in async arrow function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1465 | 
        
        
          | nested-async-arrow-function-await-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async arrow function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2139 | 
        
        
          | nested-async-arrow-function-await-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested in async arrow function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2540 | 
        
        
          | nested-async-arrow-function-await-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async arrow function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2341 | 
        
        
          | nested-async-arrow-function-await-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested in async arrow function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2648 | 
        
        
          | nested-async-arrow-function-await-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested in async arrow function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2535 | 
        
        
          | nested-async-arrow-function-await-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested in async arrow function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1915 | 
        
        
          | nested-async-arrow-function-await-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async arrow function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1952 | 
        
        
          | nested-async-arrow-function-return-await-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async arrow function, returned)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1555 | 
        
        
          | nested-async-arrow-function-return-await-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async arrow function, returned)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1552 | 
        
        
          | nested-async-arrow-function-return-await-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested in async arrow function, returned)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1692 | 
        
        
          | nested-async-arrow-function-return-await-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested in async arrow function, returned)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1467 | 
        
        
          | nested-async-arrow-function-return-await-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async arrow function, returned)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2141 | 
        
        
          | nested-async-arrow-function-return-await-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested in async arrow function, returned)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2542 | 
        
        
          | nested-async-arrow-function-return-await-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async arrow function, returned)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2343 | 
        
        
          | nested-async-arrow-function-return-await-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested in async arrow function, returned)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2650 | 
        
        
          | nested-async-arrow-function-return-await-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested in async arrow function, returned)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2537 | 
        
        
          | nested-async-arrow-function-return-await-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested in async arrow function, returned)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1917 | 
        
        
          | nested-async-arrow-function-return-await-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async arrow function, returned)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1954 | 
        
        
          | nested-async-function-await-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1548 | 
        
        
          | nested-async-function-await-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1545 | 
        
        
          | nested-async-function-await-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested in async function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1685 | 
        
        
          | nested-async-function-await-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested in async function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1460 | 
        
        
          | nested-async-function-await-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2134 | 
        
        
          | nested-async-function-await-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested in async function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2535 | 
        
        
          | nested-async-function-await-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2336 | 
        
        
          | nested-async-function-await-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested in async function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2643 | 
        
        
          | nested-async-function-await-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested in async function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2530 | 
        
        
          | nested-async-function-await-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested in async function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1910 | 
        
        
          | nested-async-function-await-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async function, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1947 | 
        
        
          | nested-async-function-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1528 | 
        
        
          | nested-async-function-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1525 | 
        
        
          | nested-async-function-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested in async function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1665 | 
        
        
          | nested-async-function-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested in async function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1440 | 
        
        
          | nested-async-function-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async function)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2114 | 
        
        
          | nested-async-function-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested in async function)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2515 | 
        
        
          | nested-async-function-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async function)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2316 | 
        
        
          | nested-async-function-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested in async function)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2623 | 
        
        
          | nested-async-function-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested in async function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2510 | 
        
        
          | nested-async-function-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested in async function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1890 | 
        
        
          | nested-async-function-return-await-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async function, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1570 | 
        
        
          | nested-async-function-return-await-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async function, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1567 | 
        
        
          | nested-async-function-return-await-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested in async function, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1707 | 
        
        
          | nested-async-function-return-await-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested in async function, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1482 | 
        
        
          | nested-async-function-return-await-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async function, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2156 | 
        
        
          | nested-async-function-return-await-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested in async function, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2557 | 
        
        
          | nested-async-function-return-await-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async function, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2358 | 
        
        
          | nested-async-function-return-await-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested in async function, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2665 | 
        
        
          | nested-async-function-return-await-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested in async function, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2552 | 
        
        
          | nested-async-function-return-await-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested in async function, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1932 | 
        
        
          | nested-async-function-return-await-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async function, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1969 | 
        
        
          | nested-async-function-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1927 | 
        
        
          | nested-async-gen-await-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async generator, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1572 | 
        
        
          | nested-async-gen-await-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async generator, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1569 | 
        
        
          | nested-async-gen-await-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested in async generator, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1709 | 
        
        
          | nested-async-gen-await-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested in async generator, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1484 | 
        
        
          | nested-async-gen-await-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async generator, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2158 | 
        
        
          | nested-async-gen-await-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested in async generator, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2559 | 
        
        
          | nested-async-gen-await-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async generator, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2360 | 
        
        
          | nested-async-gen-await-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested in async generator, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2667 | 
        
        
          | nested-async-gen-await-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested in async generator, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2554 | 
        
        
          | nested-async-gen-await-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested in async generator, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1934 | 
        
        
          | nested-async-gen-await-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async generator, awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1971 | 
        
        
          | nested-async-gen-return-await-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async generator, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1594 | 
        
        
          | nested-async-gen-return-await-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested in async generator, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1591 | 
        
        
          | nested-async-gen-return-await-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested in async generator, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1731 | 
        
        
          | nested-async-gen-return-await-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested in async generator, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1506 | 
        
        
          | nested-async-gen-return-await-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async generator, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2180 | 
        
        
          | nested-async-gen-return-await-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested in async generator, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2581 | 
        
        
          | nested-async-gen-return-await-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async generator, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2382 | 
        
        
          | nested-async-gen-return-await-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested in async generator, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2689 | 
        
        
          | nested-async-gen-return-await-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested in async generator, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2576 | 
        
        
          | nested-async-gen-return-await-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested in async generator, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1956 | 
        
        
          | nested-async-gen-return-await-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested in async generator, returns awaited)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import, async-iteration]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1993 | 
        
        
          | nested-block-import-catch-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested block)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1482 | 
        
        
          | nested-block-import-catch-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested block)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1479 | 
        
        
          | nested-block-import-catch-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested block)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1619 | 
        
        
          | nested-block-import-catch-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested block)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1394 | 
        
        
          | nested-block-import-catch-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested block)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2068 | 
        
        
          | nested-block-import-catch-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested block)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2469 | 
        
        
          | nested-block-import-catch-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested block)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2270 | 
        
        
          | nested-block-import-catch-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested block)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2577 | 
        
        
          | nested-block-import-catch-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested block)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2464 | 
        
        
          | nested-block-import-catch-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested block)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1844 | 
        
        
          | nested-block-import-catch-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested block)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1881 | 
        
        
          | nested-block-labeled-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested block syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1504 | 
        
        
          | nested-block-labeled-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested block syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1501 | 
        
        
          | nested-block-labeled-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested block syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1641 | 
        
        
          | nested-block-labeled-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested block syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1416 | 
        
        
          | nested-block-labeled-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested block syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2090 | 
        
        
          | nested-block-labeled-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested block syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2491 | 
        
        
          | nested-block-labeled-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested block syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2292 | 
        
        
          | nested-block-labeled-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested block syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2599 | 
        
        
          | nested-block-labeled-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested block syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2486 | 
        
        
          | nested-block-labeled-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested block syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1866 | 
        
        
          | nested-block-labeled-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested block syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1903 | 
        
        
          | nested-do-while-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested do while syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1512 | 
        
        
          | nested-do-while-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested do while syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1509 | 
        
        
          | nested-do-while-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested do while syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1649 | 
        
        
          | nested-do-while-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested do while syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1424 | 
        
        
          | nested-do-while-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested do while syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2098 | 
        
        
          | nested-do-while-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested do while syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2499 | 
        
        
          | nested-do-while-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested do while syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2300 | 
        
        
          | nested-do-while-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested do while syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2607 | 
        
        
          | nested-do-while-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested do while syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2494 | 
        
        
          | nested-do-while-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested do while syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1874 | 
        
        
          | nested-do-while-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested do while syntax)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1911 | 
        
        
          | nested-else-import-catch-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested else)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1500 | 
        
        
          | nested-else-import-catch-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested else)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1497 | 
        
        
          | nested-else-import-catch-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested else)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1637 | 
        
        
          | nested-else-import-catch-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested else)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1412 | 
        
        
          | nested-else-import-catch-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested else)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2086 | 
        
        
          | nested-else-import-catch-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested else)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2487 | 
        
        
          | nested-else-import-catch-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested else)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2288 | 
        
        
          | nested-else-import-catch-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested else)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2595 | 
        
        
          | nested-else-import-catch-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested else)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2482 | 
        
        
          | nested-else-import-catch-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested else)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1862 | 
        
        
          | nested-else-import-catch-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested else)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1899 | 
        
        
          | nested-function-import-catch-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1505 | 
        
        
          | nested-function-import-catch-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1502 | 
        
        
          | nested-function-import-catch-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1642 | 
        
        
          | nested-function-import-catch-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1417 | 
        
        
          | nested-function-import-catch-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested function)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2091 | 
        
        
          | nested-function-import-catch-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested function)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2492 | 
        
        
          | nested-function-import-catch-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested function)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2293 | 
        
        
          | nested-function-import-catch-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested function)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2600 | 
        
        
          | nested-function-import-catch-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2487 | 
        
        
          | nested-function-import-catch-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1867 | 
        
        
          | nested-function-import-catch-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested function)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1904 | 
        
        
          | nested-if-import-catch-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested if)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1485 | 
        
        
          | nested-if-import-catch-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested if)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1482 | 
        
        
          | nested-if-import-catch-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested if)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1622 | 
        
        
          | nested-if-import-catch-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested if)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1397 | 
        
        
          | nested-if-import-catch-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested if)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2071 | 
        
        
          | nested-if-import-catch-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested if)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2472 | 
        
        
          | nested-if-import-catch-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested if)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2273 | 
        
        
          | nested-if-import-catch-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested if)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2580 | 
        
        
          | nested-if-import-catch-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested if)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2467 | 
        
        
          | nested-if-import-catch-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested if)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1847 | 
        
        
          | nested-if-import-catch-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested if)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1884 | 
        
        
          | nested-while-import-catch-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested while)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1511 | 
        
        
          | nested-while-import-catch-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (nested while)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1508 | 
        
        
          | nested-while-import-catch-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (nested while)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1648 | 
        
        
          | nested-while-import-catch-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (nested while)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1423 | 
        
        
          | nested-while-import-catch-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested while)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2097 | 
        
        
          | nested-while-import-catch-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (nested while)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2498 | 
        
        
          | nested-while-import-catch-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested while)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2299 | 
        
        
          | nested-while-import-catch-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (nested while)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2606 | 
        
        
          | nested-while-import-catch-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (nested while)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2493 | 
        
        
          | nested-while-import-catch-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (nested while)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1873 | 
        
        
          | nested-while-import-catch-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (nested while)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1910 | 
        
        
          | script-code_FIXTURE.js | 
           | 
          388 | 
        
        
          | shell.js | 
           | 
          0 | 
        
        
          | top-level-import-catch-eval-rqstd-abrupt-typeerror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (top level)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1465 | 
        
        
          | top-level-import-catch-eval-rqstd-abrupt-urierror.js | 
          ---
description: Abrupt completion during module evaluation precludes further evaluation (top level)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    6. For each String required that is an element of
       module.[[RequestedModules]] do,
       a. Let requiredModule be ? HostResolveImportedModule(module, required).
       b. Perform ? requiredModule.ModuleEvaluation().
--- | 
          1462 | 
        
        
          | top-level-import-catch-eval-script-code-target.js | 
          ---
description: import() from a module code can load a file with script code, but the target is resolved into a Module Record (top level)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, module, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Modules
    Static Semantics: Early Errors
      ModuleBody : ModuleItemList
      - It is a Syntax Error if the LexicallyDeclaredNames of ModuleItemList containsany duplicate entries.
      - It is a Syntax Error if any element of the LexicallyDeclaredNames of ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
--- | 
          1602 | 
        
        
          | top-level-import-catch-file-does-not-exist.js | 
          ---
description: Non existent file can't resolve to a Script or Module Record (top level)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    If a Module Record corresponding to the pair referencingModulereferencingScriptOrModule,
    specifier does not exist or cannot be created, an exception must be thrown.
--- | 
          1377 | 
        
        
          | top-level-import-catch-import-defer-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (top level)
esid: sec-import-call-runtime-semantics-evaluation
features: [import-defer, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . defer ( |AssignmentExpression| )
        1. Return ? EvaluateImportCall(|AssignmentExpression|, ~defer~)
    EvaluateImportCall ( specifierExpression, phase )
        1. Let _referrer_ be GetActiveScriptOrModule().
        1. If _referrer_ is *null*, set _referrer_ to the current Realm Record.
        1. Let _specifierRef_ be ? Evaluation of _specifierExpression_.
        1. Let _specifier_ be ? GetValue(_specifierRef_).
        1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
        1. Let _specifierString_ be Completion(ToString(_specifier_)).
        1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
        ...
--- | 
          2051 | 
        
        
          | top-level-import-catch-import-source-source-text-module.js | 
          ---
description: GetModuleSource of SourceTextModule always returns an abrupt completion. (top level)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2452 | 
        
        
          | top-level-import-catch-import-source-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (top level)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
--- | 
          2253 | 
        
        
          | top-level-import-catch-import-source-specifier-tostring.js | 
          ---
description: ToString value of specifier (top level)
esid: sec-import-call-runtime-semantics-evaluation
features: [source-phase-imports, dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import . source ( AssignmentExpression )
    1. Return ? EvaluateImportCall(AssignmentExpression, source).
    13.3.10.1.1 EvaluateImportCall ( specifierExpression, phase )
    1. Let referrer be GetActiveScriptOrModule().
    2. If referrer is null, set referrer to the current Realm Record.
    3. Let specifierRef be ? Evaluation of specifierExpression.
    4. Let specifier be ? GetValue(specifierRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be Completion(ToString(specifier)).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Let moduleRequest be a new ModuleRequest Record { [[Specifier]]: specifierString, [[Phase]]: phase }.
    9. Perform HostLoadImportedModule(referrer, moduleRequest, empty, promiseCapability).
    10. Return promiseCapability.[[Promise]].
    16.2.1.7.2 GetModuleSource ( )
    Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available.
    1. Throw a SyntaxError exception.
--- | 
          2560 | 
        
        
          | top-level-import-catch-instn-iee-err-ambiguous-import.js | 
          ---
description: IndirectExportEntries validation - ambiguous imported bindings (top level)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    9. Let starResolution be null.
    10. For each ExportEntry Record e in module.[[StarExportEntries]], do
        a. Let importedModule be ? HostResolveImportedModule(module,
           e.[[ModuleRequest]]).
        b. Let resolution be ? importedModule.ResolveExport(exportName,
           resolveSet, exportStarSet).
        c. If resolution is "ambiguous", return "ambiguous".
        d. If resolution is not null, then
           i. If starResolution is null, let starResolution be resolution.
           ii. Else,
               1. Assert: there is more than one * import that includes the
                  requested name.
               2. If resolution.[[Module]] and starResolution.[[Module]] are
                  not the same Module Record or
                  SameValue(resolution.[[BindingName]],
                  starResolution.[[BindingName]]) is false, return "ambiguous".
--- | 
          2447 | 
        
        
          | top-level-import-catch-instn-iee-err-circular.js | 
          ---
description: IndirectExportEntries validation - circular imported bindings (top level)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    [...]
    9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
       a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
       b. If resolution is null or resolution is "ambiguous", throw a
          SyntaxError exception.
    [...]
    15.2.1.16.3 ResolveExport
    [...]
    2. For each Record {[[Module]], [[ExportName]]} r in resolveSet, do:
       a. If module and r.[[Module]] are the same Module Record and
          SameValue(exportName, r.[[ExportName]]) is true, then
          i. Assert: this is a circular import request.
          ii. Return null.
--- | 
          1827 | 
        
        
          | top-level-import-catch-specifier-tostring-abrupt-rejects.js | 
          ---
description: Abrupt from ToString(specifier) rejects the promise (top level)
esid: sec-import-call-runtime-semantics-evaluation
features: [dynamic-import]
flags: [generated, async]
info: |
    ImportCall :
        import( AssignmentExpression )
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Assert: referencingScriptOrModule is a Script Record or Module Record (i.e. is not null).
    3. Let argRef be the result of evaluating AssignmentExpression.
    4. Let specifier be ? GetValue(argRef).
    5. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    6. Let specifierString be ToString(specifier).
    7. IfAbruptRejectPromise(specifierString, promiseCapability).
    8. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    9. Return promiseCapability.[[Promise]].
    Import Calls
    Runtime Semantics: Evaluation
    ImportCall : import(AssignmentExpression)
    1. Let referencingScriptOrModule be ! GetActiveScriptOrModule().
    2. Let argRef be the result of evaluating AssignmentExpression.
    3. Let specifier be ? GetValue(argRef).
    4. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    5. Let specifierString be ToString(specifier).
    6. IfAbruptRejectPromise(specifierString, promiseCapability).
    7. Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
    8. Return promiseCapability.[[Promise]].
--- | 
          1864 |