I have written a wrapper for libuv in C#. libuv is the IO abstraction for node.js.
libuv basically exposes an event loop for IO (it abstracts all the different platforms away).
Now the problem that I face is that I have a callback based API everywhere and that sucks, because of the constant indentation and rather hard programming against the API:
var server = new TcpListener();
server.Bind("127.0.0.1", 8000);
server.Connection += () => {