public function __invoke(ObservableInterface $observable, ObserverInterface $observer, SchedulerInterface $scheduler = null)
{
return $observable->subscribe(new CallbackObserver(function ($x) use($observer) {
$observer->onNext(new OnNextNotification($x));
}, function ($error) use($observer) {
$observer->onNext(new OnErrorNotification($error));
$observer->onCompleted();
}, function () use($observer) {
$observer->onNext(new OnCompletedNotification());
$observer->onCompleted();
}), $scheduler);
}