/**
  * @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();
 }