I have used nats in several different ways but since it can be lossy its never been considered as a replacement for a pub sub message queue on my end. We used it for a chat message layer and that worked pretty well.
As for its message passing layer that can be interesting but you end up writing all the retry and failure logic anyway so its usually just better to use an existing message layer that handles all of that for you anyway without all the funky abstractions.
Again, its interesting but nowhere near close to being a rabbit or pulsar replacement if reliability is a goal.
Also, NATS has client libraries for many languages that adds request/response semantics on top of the pub/sub semantics.
I am interested to see where NATS goes but for where we are today Pulsar was a much more obvious choice.