When I think of event loop blocking, the first thing I think of is GC. I find it strange that the author doesn't mention or consider GC. They might easily have been creating too many closures in a loop (a closure per data item, instead of a single handler for all data items), or millions of long lived pointers (using a Javascript object as a hash table for caching, instead of a flat buffer-based hash table).
Did the author tune the size of the libuv threadpool or did they leave it at the default of 4 threads?
Also, the response times given both for Node and their new system in Go are really not that great. The results for Go are an anti-climax considering it was a rewrite. They could probably undercut both times with a better design, regardless of language.
Node is a great control plane, and you can always use C++ as your data plane.