@@ -101,6 +101,66 @@ test("forEachSeries", {
101101 [ "end" , 3 ]
102102 ] ) ;
103103 } ) ;
104+ } ,
105+
106+ "processing stops on sync error" : function ( ) {
107+ var log = [ ] ;
108+
109+ return promises . forEachSeries ( [ 1 , 2 , 3 ] , function ( element ) {
110+ return new Promise ( function ( resolve ) {
111+ log . push ( [ "start" , element ] ) ;
112+ if ( element === 2 ) {
113+ throw new Error ( "failure" ) ;
114+ } else {
115+ setTimeout ( function ( ) {
116+ log . push ( [ "end" , element ] ) ;
117+ resolve ( element * 2 ) ;
118+ } , 0 ) ;
119+ }
120+ } ) ;
121+ } ) . then (
122+ function ( ) {
123+ assert . fail ( "Expected rejection" ) ;
124+ } ,
125+ function ( error ) {
126+ assert . strictEqual ( error . message , "failure" ) ;
127+ assert . deepStrictEqual ( log , [
128+ [ "start" , 1 ] ,
129+ [ "end" , 1 ] ,
130+ [ "start" , 2 ]
131+ ] ) ;
132+ }
133+ ) ;
134+ } ,
135+
136+ "processing stops on async error" : function ( ) {
137+ var log = [ ] ;
138+
139+ return promises . forEachSeries ( [ 1 , 2 , 3 ] , function ( element ) {
140+ return new Promise ( function ( resolve , reject ) {
141+ log . push ( [ "start" , element ] ) ;
142+ setTimeout ( function ( ) {
143+ if ( element === 2 ) {
144+ reject ( new Error ( "failure" ) ) ;
145+ } else {
146+ log . push ( [ "end" , element ] ) ;
147+ resolve ( element * 2 ) ;
148+ }
149+ } , 0 ) ;
150+ } ) ;
151+ } ) . then (
152+ function ( ) {
153+ assert . fail ( "Expected rejection" ) ;
154+ } ,
155+ function ( error ) {
156+ assert . strictEqual ( error . message , "failure" ) ;
157+ assert . deepStrictEqual ( log , [
158+ [ "start" , 1 ] ,
159+ [ "end" , 1 ] ,
160+ [ "start" , 2 ]
161+ ] ) ;
162+ }
163+ ) ;
104164 }
105165} ) ;
106166
0 commit comments