Defining an event
Listening
Dispatching
Async listeners run in a
ThreadPoolExecutor with 4 workers. Use them for non-critical
work — analytics, logging, notifications. For anything that must not be lost, enqueue a
background job instead.