public function catchError_ThrowFromNestedCatch()
{
$error = new \Exception();
$error2 = new \InvalidArgumentException();
$firstHandlerCalled = false;
$secondHandlerCalled = false;
$o1 = $this->createHotObservable([onNext(150, 1), onNext(210, 2), onError(215, $error)]);
$o2 = $this->createHotObservable([onNext(220, 3), onError(225, $error2)]);
$o3 = $this->createHotObservable([onNext(230, 4), onCompleted(235)]);
$results = $this->scheduler->startWithCreate(function () use($o1, $o2, $o3, &$firstHandlerCalled, &$secondHandlerCalled, $error, $error2) {
return $o1->catchError(function ($e) use($o2, &$firstHandlerCalled, $error) {
$firstHandlerCalled = true;
$this->assertSame($e, $error);
return $o2;
})->catchError(function ($e) use($o3, &$secondHandlerCalled, $error2) {
$secondHandlerCalled = true;
$this->assertSame($e, $error2);
return $o3;
});
});
$this->assertMessages([onNext(210, 2), onNext(220, 3), onNext(230, 4), onCompleted(235)], $results->getMessages());
$this->assertTrue($firstHandlerCalled);
$this->assertTrue($secondHandlerCalled);
}