77use React \EventLoop \Factory ;
88use React \Http \MiddlewareRunner ;
99use React \Http \ServerRequest ;
10+ use React \Promise ;
1011use React \Tests \Http \Middleware \ProcessStack ;
1112use RingCentral \Psr7 \Response ;
1213use Clue \React \Block ;
@@ -93,7 +94,26 @@ public function testProcessStack(array $middlewares, $expectedCallCount)
9394 }
9495 }
9596
96- public function testNextCanBeRunMoreThanOnceWithoutCorruptingTheMiddlewareStack ()
97+ public function provideErrorHandler ()
98+ {
99+ return array (
100+ array (
101+ function (\Exception $ e ) {
102+ throw $ e ;
103+ }
104+ ),
105+ array (
106+ function (\Exception $ e ) {
107+ return Promise \reject ($ e );
108+ }
109+ )
110+ );
111+ }
112+
113+ /**
114+ * @dataProvider provideErrorHandler
115+ */
116+ public function testNextCanBeRunMoreThanOnceWithoutCorruptingTheMiddlewareStack ($ errorHandler )
97117 {
98118 $ exception = new \RuntimeException ('exception ' );
99119 $ retryCalled = 0 ;
@@ -110,15 +130,15 @@ public function testNextCanBeRunMoreThanOnceWithoutCorruptingTheMiddlewareStack(
110130 $ response = new Response ();
111131 $ called = 0 ;
112132 $ runner = new MiddlewareRunner (array (
113- $ retry ,
114- function () use (&$ called , $ response , $ exception ) {
115- $ called ++;
116- if ($ called === 1 ) {
117- throw $ exception ;
133+ $ retry ,
134+ function () use ($ errorHandler , &$ called , $ response , $ exception ) {
135+ $ called ++;
136+ if ($ called === 1 ) {
137+ return $ errorHandler ($ exception );
138+ }
139+
140+ return $ response ;
118141 }
119-
120- return $ response ;
121- }
122142 ));
123143
124144 $ request = new ServerRequest ('GET ' , 'https://example.com/ ' );
0 commit comments