@@ -109,9 +109,9 @@ export async function runTask(
109109 }
110110
111111 return result
112- } catch ( error ) {
112+ } catch ( err ) {
113113 parentAbortSignal = null
114- throw error
114+ throw err
115115 }
116116 }
117117
@@ -122,10 +122,10 @@ export async function runTask(
122122 task . error = undefined
123123 task . _abortController = abortController
124124
125- const [ status , error ] : [ AsyncTaskStatus , Error ?] = await new Promise ( async resolve => {
126- const done = ( result : [ AsyncTaskStatus , Error ?] ) => {
125+ const [ status , error , result ] : [ AsyncTaskStatus , Error ? , any ?] = await new Promise ( async resolve => {
126+ const done = ( args : [ AsyncTaskStatus , Error ? , any ?] ) => {
127127 signal . removeEventListener ( 'abort' , abortHandler )
128- resolve ( result )
128+ resolve ( args )
129129 }
130130
131131 const abortHandler = ( ) => {
@@ -142,20 +142,20 @@ export async function runTask(
142142 signal . addEventListener ( 'abort' , abortHandler )
143143
144144 try {
145- await flow ( generator ) ( { signal, exec } )
146- done ( [ AsyncTaskStatus . COMPLETE ] )
147- } catch ( error ) {
148- if ( error instanceof AsyncTaskAbortError ) {
149- done ( [ AsyncTaskStatus . ABORTED , error ] )
145+ const result = await flow ( generator ) ( { signal, exec } )
146+ done ( [ AsyncTaskStatus . COMPLETE , undefined , result ] )
147+ } catch ( err ) {
148+ if ( err instanceof AsyncTaskAbortError ) {
149+ done ( [ AsyncTaskStatus . ABORTED , err ] )
150150 } else {
151- done ( [ AsyncTaskStatus . FAILED , error ] )
151+ done ( [ AsyncTaskStatus . FAILED , err ] )
152152 }
153153 }
154154 } )
155155
156156 if ( isAlive ( task ) && task . pending && ! signal . aborted ) {
157- task . _resolve ( status , error )
157+ task . _resolve ( status , error , result )
158158 }
159159
160- return new AsyncTaskResult ( status , error )
160+ return new AsyncTaskResult ( status , error , result )
161161}
0 commit comments