Why can't I listen on 'localhost' but can I listen on '127.0.0.1'?

Are uou using cygwin build? Did you try 'Set up Domain Name Resolution (DNS)' :

Cygwin internally uses Windows for DNS queries. node.js uses the c-ares library that relies on /etc/resolv.conf. Cygwin ships with an empty /etc/resolv.conf. In order to enabled networking from your scripts, add these IPs to the file (Google Public DNS):

$ vim /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

It turned out that using the cygwin build was the problem.

I looked at http://nodejs.org/ and I discovered that only recently a native Windows binary file was made available, which works like a charm.