public void Dispose() { var d = new IDisposable[1]; var cs = new CompletableSubject(); var source = cs.Cache(c => d[0] = c); Assert.IsNull(d[0]); Assert.IsFalse(cs.HasObserver()); var to1 = source.Test(); Assert.IsNotNull(d[0]); Assert.IsTrue(cs.HasObserver()); source.Test(true).AssertEmpty(); d[0].Dispose(); Assert.IsFalse(cs.HasObserver()); to1.AssertFailure(typeof(OperationCanceledException)); source.Test().AssertFailure(typeof(OperationCanceledException)); }