diff --git a/lib/Rx/Operator/RetryWhenOperator.php b/lib/Rx/Operator/RetryWhenOperator.php index 19cecde6..3438053b 100644 --- a/lib/Rx/Operator/RetryWhenOperator.php +++ b/lib/Rx/Operator/RetryWhenOperator.php @@ -90,8 +90,11 @@ function ($x) use ($subscribeToSource, &$sourceError) { } }, [$observer, 'onError'], - function () use (&$innerCompleted) { + function () use (&$innerCompleted, &$sourceError, $observer) { $innerCompleted = true; + if ($sourceError) { + $observer->onCompleted(); + } } ), $scheduler); diff --git a/test/Rx/Functional/Operator/RetryWhenTest.php b/test/Rx/Functional/Operator/RetryWhenTest.php index fb456b84..eb013a2a 100644 --- a/test/Rx/Functional/Operator/RetryWhenTest.php +++ b/test/Rx/Functional/Operator/RetryWhenTest.php @@ -204,8 +204,6 @@ public function retryWhen_Observable_complete() */ public function retryWhen_Observable_next_complete() { - $this->markTestSkipped("skip until takeWhile is implemented"); - $error = new \Exception(); $xs = $this->createColdObservable([