manually handling streaming html is amazing and not nearly as difficult as I thought it was... Streaming plus declarative shadow dom for out of order rendering is kind of magic.

Now would anyone know why its not working in safari? it is working fine in chrome and firefox.
There are my headers.

ctx.res.headers.set("Content-Encoding", "chunked");
ctx.res.headers.set("Transfer-Encoding", "chunked");
ctx.res.headers.set("Content-Type", "text/html; charset=utf8");
ctx.res.headers.set("Cache-Control", "no-cache");
ctx.res.headers.set("Connection", "keep-alive");
ctx.res.headers.set("X-Content-Type-Options", "nosniff");

Figured it out with help from @passle. The issue is how Safari decides when to start painting. If there aren't enough renderable bytes (seems like 512 minimum) then safari won't actually render as it stream the data in. adding some extra hidden bytes solved the problem
@deebloo @passle in case you haven't seen it, there's a some more info courtesy of @konnorrogers at this bug report https://bugs.webkit.org/show_bug.cgi?id=265386
265386 – Streaming HTML only works in iframe elements. Safari waits to buffer all HTML before rendering.

WebKit Bugzilla