Preserve the MDC context during callbacks.

The MDC context is captured when the Deferred is created. If another
thread begins the callback chain, its MDC thread locals will be set to
the captured values. Once the chain is complete, the thread's MDC
context will be restored.