public function observable_dispose_after_complete()
{
$canceled = false;
$deferred = new Deferred(function () use(&$canceled) {
$canceled = true;
});
$o = Promise::toObservable($deferred->promise());
$this->scheduler->schedule(function () use($deferred) {
$deferred->resolve(1);
}, 200);
$results = new MockObserver($this->scheduler);
$s = $o->subscribe($results, $this->scheduler);
$this->scheduler->schedule(function () use($s) {
$s->dispose();
}, 250);
$this->scheduler->start();
$this->assertMessages([onNext(200, 1), onCompleted(200)], $results->getMessages());
$this->assertFalse($canceled);
}