responseWriteJob
Tracks the lifetime of the response write on the Netty I/O thread.
This Job is a child of the call's coroutine Job (see coroutineContext), so the call's coroutine remains "completing" — and is awaited by the parent application Job during graceful shutdown — until the response is fully written. This removes the need to suspend on Job.join from the application thread at the end of each call (for example, the io.ktor.server.netty.NettyApplicationEngine AFTER_CALL_PHASE interceptor).
Initialized via initResponseWriteJob on the Netty I/O thread synchronously after call construction (from processResponse) and before the user handler coroutine is launched. The deferred initialization is required because subclasses bind coroutineContext in their own primary constructor, after the base class constructor has finished.