@@ -6,7 +6,7 @@ import $xworker from './worker/class.js';
66import workerURL from './worker/url.js' ;
77import { getRuntime , getRuntimeID } from './loader.js' ;
88import { registry } from './interpreters.js' ;
9- import { JSModules , all , dispatch , resolve , defineProperty , nodeInfo , registerJSModules } from './utils.js' ;
9+ import { JSModules , isSync , all , dispatch , resolve , defineProperty , nodeInfo , registerJSModules } from './utils.js' ;
1010
1111const getRoot = ( script ) => {
1212 let parent = script ;
@@ -55,12 +55,6 @@ const execute = async (currentScript, source, XWorker, isAsync) => {
5555 source ,
5656 ] ) ;
5757 try {
58- // temporarily override inherited document.currentScript in a non writable way
59- // but it deletes it right after to preserve native behavior (as it's sync: no trouble)
60- defineProperty ( document , 'currentScript' , {
61- configurable : true ,
62- get : ( ) => currentScript ,
63- } ) ;
6458 registerJSModules ( type , module , interpreter , JSModules ) ;
6559 module . registerJSModule ( interpreter , 'polyscript' , {
6660 XWorker,
@@ -69,10 +63,16 @@ const execute = async (currentScript, source, XWorker, isAsync) => {
6963 workers : workersHandler ,
7064 } ) ;
7165 dispatch ( currentScript , type , 'ready' ) ;
72- const result = module [ isAsync ? 'runAsync' : 'run' ] ( interpreter , content ) ;
66+ // temporarily override inherited document.currentScript in a non writable way
67+ // but it deletes it right after to preserve native behavior (as it's sync: no trouble)
68+ defineProperty ( document , 'currentScript' , {
69+ configurable : true ,
70+ get : ( ) => currentScript ,
71+ } ) ;
7372 const done = dispatch . bind ( null , currentScript , type , 'done' ) ;
74- if ( isAsync ) result . then ( done ) ;
75- else done ( ) ;
73+ let result = module [ isAsync ? 'runAsync' : 'run' ] ( interpreter , content ) ;
74+ if ( isAsync ) result = await result ;
75+ done ( ) ;
7676 return result ;
7777 } finally {
7878 delete document . currentScript ;
@@ -125,7 +125,6 @@ export const handle = async (script) => {
125125 // and/or source code with different config or interpreter
126126 const {
127127 attributes : {
128- async : asyncAttribute ,
129128 config,
130129 env,
131130 name : wn ,
@@ -138,7 +137,7 @@ export const handle = async (script) => {
138137 } = script ;
139138
140139 /* c8 ignore start */
141- const isAsync = asyncAttribute ?. value !== 'false' ;
140+ const isAsync = ! isSync ( script ) ;
142141
143142 const versionValue = version ?. value ;
144143 const name = getRuntimeID ( type , versionValue ) ;
0 commit comments