             next(740, 106),
             next(940, 202),
             next(950, 203),
-            next(975, 301)
-        ])
-    }
-    
-    func testConcatMap_Complete_InnerNotComplete() {
-        let scheduler = TestScheduler(initialClock: 0)
-        
+        ])
+    }
+
+    func test_InnerComplete_OuterCompleteBeforeInner() {
+        let scheduler = TestScheduler(initialClock: 0)
+
         let ys1 = scheduler.createColdObservable([
             next(10, 102),
             next(90, 103),

            next(740, 106),
            next(940, 202),
            next(950, 203),
            next(975, 301)
        ])
    }
    
    func testConcatMap_Error_Outer() {

        XCTAssertEqual(xs.subscriptions, [
            Subscription(200, 900)
        ])
        
        XCTAssertEqual(ys1.subscriptions, [
            Subscription(300, 760)
        ])
        
        XCTAssertEqual(ys2.subscriptions, [
            Subscription(760, 1000)
        ])
        
        XCTAssertEqual(ys3.subscriptions, [])
        
        XCTAssertEqual(ys4.subscriptions, [])
        
        XCTAssertEqual(ys5.subscriptions, [])
        
        XCTAssertEqual(results.events, [
            next(310, 102),
            next(390, 103),
            next(410, 104),
            next(490, 105),
            next(740, 106),
            next(940, 202),
            next(950, 203)
        ])
    }
    
    func test_InnerComplete_OuterNotComplete() {
        let scheduler = TestScheduler(initialClock: 0)
        
        let ys1 = scheduler.createColdObservable([
            next(10, 102),
            next(90, 103),
            next(110, 104),
            next(190, 105),
            next(440, 106),
            completed(460)
            ])
        
        let ys2 = scheduler.createColdObservable([
            next(180, 202),
            next(190, 203),
            completed(205)
            ])
        
        let xs = scheduler.createHotObservable([
            next(300, ys1),
            next(400, ys2),
            ])
        
        let results = scheduler.start {
            return xs.concatMap {
                return $0
            }
        }
        
        XCTAssertEqual(xs.subscriptions, [
            Subscription(200, 1000)
        ])
        
        XCTAssertEqual(ys1.subscriptions, [
            Subscription(300, 760)
        ])
        
        XCTAssertEqual(ys2.subscriptions, [
            Subscription(760, 965)
        ])
        
        XCTAssertEqual(results.events, [
            next(310, 102),
