CompositeDisposable.remove() incorrectly decrements length even if nothing was removed. This unit test fails on the 2nd assertion because length is -1:
QUnit.test("CompositeDisposable.remove bug", 2, function () {
var c = new Rx.CompositeDisposable();
QUnit.strictEqual(c.length, 0, "Starts off with 0 length");
c.remove(new Rx.Disposable()); // remove some non-existent disposable
QUnit.strictEqual(c.length, 0, "Should still be 0 length");
});