The answer from user @ user631090 is close, but incorrect, so I thought I would answer it myself.
This is because Publish will immediately terminate new subscribers if the thread that it published itself has terminated. You can see that in the diagram here :

But it would be nice if the diagram included the subscriber after the completion of the base stream.
To add to the confusion, Defer is still being called for new subscribers. But its return value is simply ignored by Publish due to the completion of the initial stream.
I cannot yet come up with a way to realize my alleged use case. I thought, perhaps using Multicast rather than Publish , creating a new item as needed. But I still could not achieve this. And that seems rather painful for what, in my opinion, is a common use case.
source share