How to explain the addition of two asynchronous threads?

Is there any way to logically explain what happens in this code:
var b = Rx.Observable.interval(1000);
var a = Rx.Observable.interval(3000);
b.concat(a).subscribe((val) => console.log(val));


It is unclear why the console sequentially displays the numbers from zero to infinity. Although in reality we are dealing here with two nezavismosti streams that emit asynchronously across different time intervals.

That is, the pattern in the console should be approximately such:
0
1
2
<b>1</b>
3
4
5
<b>2</b>
6
7
8
June 7th 19 at 15:37
1 answer
June 7th 19 at 15:39
Solution
As I understand it, fantasize again instead of Google documents. Black and white says the same:
next transaction (subscription) cannot start until the previous completes

Want to be "independent" - use merge instead of concat.

Find more questions by tags JavaScript