node.js - i can't reproduce progressive response from server

It is the browser that buffers the incoming data until some amount has been received, before starting to render. Your Node code does just as you expect, it will sent the first part of the response, then wait for 2 seconds, then send the second half.

If you want to observe this behavior, you can send a bunch of spaces to make the browser empty its buffer. If you add this after your initial write, you will see the browser render the first half of the request.

var str = '';
for (var i = 0; i < 2000; i++){
  str += ' ';
}
res.write(str);

Obviously don't do this in real code, but it's good to demonstrate the behavior.