Maintain request context in asynchronousInvoke

Summary: Listenes are fired on different thread for an async invoke. Save/load the thread local request context so the event handlers relying on it will work.
Sounds good, will change