title: Behavior of flatMap with different Schedulers in it
body: <p>Could you explain why I am getting strange output when I change schedulers of the returned Observable in flatMap? For example, I have
  </p>
  
  <pre><code>Observable.range(1, 9)
          .flatMap {
              if (it &lt; 5) {
                  Observable.just(it)
                          .subscribeOn(Schedulers.io())
                          .observeOn(Schedulers.io())
              } else {
                  Observable.just(it)
              }
          }
          .subscribe({ println("${it}: ${Thread.currentThread().name}") })
  println("END")
  Thread.sleep(200)
  </code></pre>
  
  <p>As output I have different results on each run. E.g.
  The first launch</p>
  
  <pre><code>1: RxCachedThreadScheduler-3
  2: RxCachedThreadScheduler-3
  3: RxCachedThreadScheduler-3
  5: main
  6: main
  7: main
  END
  4: RxCachedThreadScheduler-6
  8: RxCachedThreadScheduler-6
  9: RxCachedThreadScheduler-6
  </code></pre>
  
  <p>The second launch outputs this:</p>
  
  <pre><code>5: main
  1: main
  2: main
  3: main
  6: main
  7: main
  8: main
  9: main
  END
  4: RxCachedThreadScheduler-8
  </code></pre>