/** * @param \Rx\ObservableInterface $observable * @param \Rx\ObserverInterface $observer * @param \Rx\SchedulerInterface $scheduler * @return \Rx\DisposableInterface */ public function __invoke(ObservableInterface $observable, ObserverInterface $observer, SchedulerInterface $scheduler = null) { $factory = $this->factory; try { $result = $factory(); return $result->subscribe($observer); } catch (\Exception $e) { return BaseObservable::error($e)->subscribe($observer); } }