Logging
Fix synchronization when creating events
Run innerNotifyClients (formerly notifyClients) off-thread in client/async. Better to do it this way so that events don't get reordered; it's consistent when it runs.
Produce all the events off-thread.
Explain why we need to run callbacks on-thread and therefore produce them off-thread
Always run trySendProgress on-thread.
Fix synchronization on lastActivity
Combine trySendProgress into receive()
Remove obsolete comments
Logging