The KStream fluent API returns a new instance each time because you are building a topology of processing nodes. So you can't return the same instance each time as you need different nodes to perform distinct actions.

With the Processor API it is more obvious as you manually create each node in the topology.

I'll review the chapter to make sure I explain why a new instance is returned each time.