File tree Expand file tree Collapse file tree 2 files changed +19
-1
lines changed
Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -76,7 +76,9 @@ function create(asyncFn) {
7676function resolveSyncIterator ( i , step , cb ) {
7777 if ( ! step . done ) {
7878 if ( isPromiseLike ( step . value ) ) {
79- return step . value . then ( data => resolveSyncIterator ( i , i . next ( data ) , cb ) ) ;
79+ return step . value
80+ . then ( data => resolveSyncIterator ( i , i . next ( data ) , cb ) )
81+ . catch ( error => resolveSyncIterator ( i , i . throw ( error ) , cb ) ) ;
8082 } else {
8183 return resolveSyncIterator ( i , i . next ( step . value ) , cb ) ;
8284 }
Original file line number Diff line number Diff line change @@ -62,6 +62,22 @@ describe('Coroutine', () => {
6262 expect ( tree . toJSON ( ) ) . toEqual ( result . toJSON ( ) ) ;
6363 } ) ;
6464
65+ it ( 'should rethrow exceptions back to generator' , async ( ) => {
66+ function * render ( ) {
67+ try {
68+ yield Promise . reject ( new Error ( 'Boom' ) ) ;
69+ } catch ( error ) {
70+ return < p > { error . message } </ p > ;
71+ }
72+ }
73+
74+ let TestComponent = Coroutine . create ( render ) ;
75+ let tree = await Renderer . create ( < TestComponent /> ) ;
76+
77+ let result = await Renderer . create ( < p > Boom</ p > ) ;
78+ expect ( tree . toJSON ( ) ) . toEqual ( result . toJSON ( ) ) ;
79+ } ) ;
80+
6581 it ( 'should restart coroutine on new props' , async ( ) => {
6682 let getData = jest . fn ( n => Promise . resolve ( n * 2 ) ) ;
6783 let trap = jest . fn ( ) ;
You can’t perform that action at this time.
0 commit comments