I'm not thrilled by this pull request touching `OperationConcat` as that is really non-trivial to modify and thus greatly complicates me reviewing and merging this code. I also don't understand why `BlockingObservable` needs to do anything with `OperationConcat`.

Can you please refactor this pull request into simpler changes and keep the blocking changes like `collect` separate from non-blocking changes like `concat`?