What makes a NATS client implementation the right prototype from which to extract a generic async framework layer?

This looks interesting but I'm not familiar with NATS

If you succeed in creating a generic async primitive, it doesn't really matter what the original task was (as long as it's something that requires async), no? That's an implication of it being generic?

The layer was not extracted from the NATS client, the NATS client was just a source of frustration that prompted this creation.