Stream::poll_next specifies that:
Poll::Ready(None) means that the stream has terminated, and poll_next should not be invoked again.
I understand that this is sometimes intentionally not respected, but I think there should be a variant of StreamExt::or that ends the combined stream when stream1 returns Poll::Ready(None), instead of always falling through to stream2 even when stream1 has ended.