It's not clear what you are trying to achieve here. The Rx is behaving as it should.
The Zip operator's result selector is capturing a group stream and a string. Note it is not capturing the events of the group stream.
When the result selector runs, the group stream has already sent 0
. The SelectMany
will subscribe to the group stream after the 0
event has gone.
It's only when the string is the first event sent (put the OnNext("even")
up a line) that you'll be OK because the group will be subscribed to when it is created, which is just before the first event is sent into the group.
The GroupBy
operator will not remember and replay historic events, and it's source is hot.