I can see why it's doing it, actually, because the connection is presumably done at that point and an error after everything important is done is less important, but it's poorly explained at best (as being to prevent the 'zone from exploding').
However it could be that some data has already been sent back, in which case writeHead would throw. If that happens there isn't much more we can do.