I'd suspect that Start doesn't really handle respondWith properly, and it's attempting to send a response after the fetch finishes even though one has already been sent
Otherwise you'd somehow need to get Vite to transform the email code at build time, and then run it at build time, so you could put the result in a virtual module