Always set response state within the task queue.

All forever transports except websockets (SSE and FF) can end the request before settings headers. This is a race as it's possible to end up writing headers to the OWIN dictionary after the request has finished.

To fix this we queue all actions that touch the response so that we can never touch the response after the request queue is drained.