@@ -34,8 +34,9 @@ export const handleCustomType = (node) => {
3434 for ( const selector of CUSTOM_SELECTORS ) {
3535 if ( node . matches ( selector ) ) {
3636 const type = types . get ( selector ) ;
37+ const details = registry . get ( type ) ;
3738 const { resolve } = waitList . get ( type ) ;
38- const { options, known } = registry . get ( type ) ;
39+ const { options, known } = details ;
3940 if ( ! known . has ( node ) ) {
4041 known . add ( node ) ;
4142 const {
@@ -143,11 +144,11 @@ export const handleCustomType = (node) => {
143144 runEvent : module . runEvent . bind ( module , interpreter ) ,
144145 } ;
145146
146- resolve ( resolved ) ;
147-
148- if ( error ) onerror ?. ( error , node ) ;
149-
150- onInterpreterReady ?. ( resolved , node ) ;
147+ details . queue = details . queue . then ( ( ) => {
148+ resolve ( resolved ) ;
149+ if ( error ) onerror ?. ( error , node ) ;
150+ return onInterpreterReady ?. ( resolved , node ) ;
151+ } ) ;
151152 } ) ;
152153 }
153154 }
@@ -225,6 +226,7 @@ export const define = (type, options) => {
225226 registry . set ( type , {
226227 options : assign ( { env : type } , options ) ,
227228 known : new WeakSet ( ) ,
229+ queue : Promise . resolve ( ) ,
228230 } ) ;
229231
230232 if ( ! dontBother ) addAllListeners ( document ) ;
0 commit comments