When fixing the async dispatcher to work in version 5, it became clear most of dispatcher.py would have to be reimplemented in async_dispatcher.py, because of the way it was structured.
So dispatcher.py was refactored to allow many of the functions to be reused by async_dispatcher.py.
This includes a big cleanup of dispatcher.py.
When fixing the async dispatcher to work in version 5, it became clear most of dispatcher.py would have to be reimplemented in async_dispatcher.py, because of the way it was structured.
So dispatcher.py was refactored to allow many of the functions to be reused by async_dispatcher.py.