The Task.fork is what Tomcat doesn't like

This is not a fix. A route that forks the execution will still break. See http4s/future for an example.

A full solution will initiate the async context and inject the WriteListener before handing control to the service. That will require some plumbing changes to Http4sServlet.