:~)
So, an infinite stream doesn't really store an infinite amount of data in your computer. What "infinite stream" really means is that you can retrieve any item at a finite position in a finite amount of time. But there is no "last item." Think about NUMBERS FROM. The last item of the stream it reports would be the largest integer. But there is no largest integer! (Proof by contradiction: Suppose there is a largest integer. Add 1 to it. What's the answer?)
So the reason you can't reverse an infinite stream isn't a bug in your code. It's that the whole idea is incoherent.
Since you can't do that, think about how to generate the stream of all the positive rational numbers (ratios of two positive integers). It's a really hard problem, solved around 1900 by Georg [sic] Cantor.