Completely missed my point.
Asynchronous communication means that I send you a message whenever I want and you respond whenever you want.
If I wanted to talk in the moment I would walk to your office or call you.
Messaging makes no sense if I have to remember every message I want to send and send them when the receiver is available. That’s not how it works.
It’s the receiver’s responsibility to read that message when they have to.
I don’t think there’s a clear definition of either. I’d say if it has no UI, it’s a program. And if it has a UI, I don’t know if it’s a program or an app.