ContextChain code cleanup
Change event handler exception types to Throwable
Fix ordering of calling ContextChain.done() during async client calls