Message queue is checked by a single dedicated thread.

Dropping scheduleDispatch method and the related sync complexity. The new solution is a simple worker thread who regularly wakes up and checks for waiting messages.
Minor .gitignore fix.