/** * @param ObserverInterface $observer * @param \Rx\SchedulerInterface|null $scheduler * @return DisposableInterface */ public function subscribe(ObserverInterface $observer, \Rx\SchedulerInterface $scheduler = null) { $this->object->on($this->nextAction, function () use($observer) { $observer->onNext(func_get_args()); }); if ($this->errorAction) { $this->object->on($this->errorAction, function ($error = null) use($observer) { $ex = $error instanceof \Exception ? $error : new \Exception($error); $observer->onError($ex); }); } if ($this->completeAction) { $this->object->on($this->completeAction, function () use($observer) { $observer->onCompleted(); }); } return new EmptyDisposable(); }