@@ -22,6 +22,7 @@ class AsyncModuleRuntimeModule extends HelperRuntimeModule {
2222 return Template . asString ( [
2323 'var webpackThen = typeof Symbol === "function" ? Symbol("webpack then") : "__webpack_then__";' ,
2424 'var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__";' ,
25+ 'var webpackError = typeof Symbol === "function" ? Symbol("webpack error") : "__webpack_error__";' ,
2526 `var completeQueue = ${ runtimeTemplate . basicFunction ( "queue" , [
2627 "if(queue) {" ,
2728 Template . indent ( [
@@ -56,9 +57,13 @@ class AsyncModuleRuntimeModule extends HelperRuntimeModule {
5657 "obj[webpackExports] = r;" ,
5758 "completeQueue(queue);" ,
5859 "queue = 0;"
60+ ] ) } , ${ runtimeTemplate . basicFunction ( "e" , [
61+ "obj[webpackError] = e;" ,
62+ "completeQueue(queue);" ,
63+ "queue = 0;"
5964 ] ) } );`,
60- ` var obj = {};
61- obj[webpackThen] = ${ runtimeTemplate . expressionFunction (
65+ " var obj = {};" ,
66+ ` obj[webpackThen] = ${ runtimeTemplate . expressionFunction (
6267 "queueFunction(queue, fn), dep['catch'](reject)" ,
6368 "fn, reject"
6469 ) } ;`,
@@ -67,13 +72,13 @@ class AsyncModuleRuntimeModule extends HelperRuntimeModule {
6772 "}"
6873 ] ) ,
6974 "}" ,
70- ` var ret = {};
71- ret[webpackThen] = ${ runtimeTemplate . expressionFunction (
75+ " var ret = {};" ,
76+ ` ret[webpackThen] = ${ runtimeTemplate . expressionFunction (
7277 "completeFunction(fn)" ,
7378 "fn"
74- ) } ;
75- ret[webpackExports] = dep;
76- return ret;`
79+ ) } ;` ,
80+ " ret[webpackExports] = dep;" ,
81+ " return ret;"
7782 ] ) } )`,
7883 "deps"
7984 ) } ;`,
@@ -119,24 +124,29 @@ class AsyncModuleRuntimeModule extends HelperRuntimeModule {
119124 ) } ;`,
120125 "module.exports = promise;" ,
121126 `body(${ runtimeTemplate . basicFunction ( "deps" , [
122- "if(!deps) return outerResolve();" ,
123127 "currentDeps = wrapDeps(deps);" ,
124- "var fn, result;" ,
128+ "var fn;" ,
129+ `var getResult = ${ runtimeTemplate . returningFunction (
130+ `currentDeps.map(${ runtimeTemplate . basicFunction ( "d" , [
131+ "if(d[webpackError]) throw d[webpackError];" ,
132+ "return d[webpackExports];"
133+ ] ) } )`
134+ ) } `,
125135 `var promise = new Promise(${ runtimeTemplate . basicFunction (
126136 "resolve, reject" ,
127137 [
128138 `fn = ${ runtimeTemplate . expressionFunction (
129- `resolve(result = currentDeps.map(${ runtimeTemplate . returningFunction (
130- "d[webpackExports]" ,
131- "d"
132- ) } ))`
139+ "resolve(getResult)"
133140 ) } ;`,
134141 "fn.r = 0;" ,
135142 "whenAll(currentDeps, fn, reject);"
136143 ]
137144 ) } );`,
138- "return fn.r ? promise : result;"
139- ] ) } ).then(outerResolve, reject);`,
145+ "return fn.r ? promise : getResult();"
146+ ] ) } , ${ runtimeTemplate . expressionFunction (
147+ "err && reject(promise[webpackError] = err), outerResolve()" ,
148+ "err"
149+ ) } );`,
140150 "isEvaluating = false;"
141151 ] ) } ;`
142152 ] ) ;
0 commit comments