Curious, you use the webserver module in phantomjs, is that right? And that's how you do the inter-process communication? I'm curious how you chose that over websockets, or over HTTP polling from your phantomjs client against a local node server..
What about using something like node-gir, or whatever appjs does to combine the event loops of node/v8 and chromium/v8?
We maintain a Node to Phantom bridge for this: https://github.com/baudehlo/node-phantom-simple