Q:

NodeJS non-blocking I/O nature

I read about non-blocking nature of nodeJS, and how I/O operations are non-blocking.  I created a simple test to prove this
var request = require('request');
var http = require('http');
var express = require('express');

var app = express();

app.get('/test1', function (req, res) {
  res.sendStatus(httpStatus. OK);
});
app.get('/test2', function (req, res) {
  request.get('https://httpbin.org/delay/15', function () {
    res.sendStatus(httpStatus. OK);
  });
});
var server = http.createServer(app);
server.listen(3003);

module.exports = app;

That's the whole test.  test1 endpoint returns OK immediately, while test2 returns OK after 15 seconds due to http request that is sent.  When I call test2 and immediately after that call test1, the response for test1 is returned after 15 seconds.  I would expect if I/O operations are non-blocking that response for test1 is going to be returned immediately. 
What am I missing? 
UPDATE:
I was sending requests using Postman with Interceptor turned on.  In that case Postman can send only one request to a single host at a time.  
So nodeJS non-blocking I/O works perfectly fine, the issue was related to Postman Interceptor plugin. 

A:

Those operations are non-blocking and this is demonstrated by your code example - I only fixed it in one place because it wasn't working with httpStatus being undefined - maybe that was your problem.  See:
var request = require('request');
var http = require('http');
var express = require('express');

var app = express();

app.get('/test1', function (req, res) {
  res.sendStatus(200);
});
app.get('/test2', function (req, res) {
  request.get('https://httpbin.org/delay/15', function () {
    res.sendStatus(200);
  });
});
var server = http.createServer(app);
server.listen(3003);

module.exports = app;

And run it:
time curl http://localhost:3003/test1
OK
real    0m0.015s
user    0m0.007s
sys 0m0.004s

and:
time curl http://localhost:3003/test2
OK
real    0m10.466s
user    0m0.000s
sys 0m0.014s

In fact you can even see that you can request the long running endpoint multiple times concurrently, and all responses will be printed at the same time:
curl http://localhost:3003/test2 &
curl http://localhost:3003/test2 &
curl http://localhost:3003/test2 &
OKOKOK

which proves that not only the /test1 endpoint is not blocking but also that the /test2 endpoint is not blocking either.