How to reconcile the different definitions of asynchrony?
The unifying definition is that one part of the system triggers an event in another part of the system, and the triggerer does not know when the event will take place.
To put it another way: in a synchronous system, you know when things (will) happen. In an asynchronous system, you don't know when things (will) happen.
In event-based programming, a thread creates another thread, and then it has no control over when the thread will do its job. For example, with AJAX, the new theard performs an HTTP request, and the original thread continues executing without knowing when the HTTP response comes back.
In communication over an asynchronous channel, the sender of a message does not know or care when the recipient will be available receive the message.
In an asynchronous distributed system, the sender of a message does not know when (or possibly even whether) the recipient will receive the message and potentially reply to it.