public function two_observables_one_disposed_before_resolve()
{
$canceled = false;
$deferred = new Deferred(function () use(&$canceled) {
$canceled = true;
});
$o1 = Promise::toObservable($deferred->promise());
$o2 = Promise::toObservable($deferred->promise())->delay(100);
$this->scheduler->schedule(function () use($deferred) {
$deferred->resolve(1);
}, 100);
$results1 = new MockObserver($this->scheduler);
$s1 = $o1->subscribe($results1, $this->scheduler);
$this->scheduler->schedule(function () use($s1) {
$s1->dispose();
}, 50);
$results2 = new MockObserver($this->scheduler);
$o2->subscribe($results2, $this->scheduler);
$this->scheduler->start();
$this->assertMessages([], $results1->getMessages());
$this->assertMessages([onNext(200, 1), onCompleted(200)], $results2->getMessages());
$this->assertFalse($canceled);
}