Showing that node shell is async and mongo shell is not

So I have a mongodb setup and I have some test data in it. I want to be able to show that the mongo shell runs our script sync and node runs our script async. I have setup the two following js files which I got while doing a Mongo University course. This is really more of a test so that I understand what's going on. I am going to cd into the directory where I have mongo installed using npm and where the scripts are also at. Then I will call these scripts, I will call the mongoshell.js using

>mongo mongoshell.js

and nodeshell.js using:

>node nodeshell.js

Here are the two scripts:

mongoshell.js

//Find one document in our collection
var doc = db.allClasses.findOne();

print('before');

//Print the result
printjson(doc);

print('after');

And the result I get from running that in the shell is: enter image description here

So my thinking here is that the print command is something that would return quicker than the query to mongo. BY placing a before and after print and everything coming out in the right order, it must be synchronous.

Next I have the nodeshell.js

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db){
    if (err) throw err;

    //Find one document in our collection
    db.collection('allClasses').findOne({}, function(err, doc){
        //Print the result
        console.dir(doc);

        //close the DB
        db.close();
    });
});

setTimeout(function(){
    console.dir("10 Milliseconds!");
}, 10);
setTimeout(function(){
    console.dir("100 Milliseconds!");
}, 100);

And the result from the console is:

enter image description here

My thinking here is that I have determined that mongo usually takes between 10 and 100 milliseconds to return my data. If I put two print commands with timeouts one at 10 ms and one at 100 ms one should fire before the json is returned BECAUSE THE NODE SHELL IS ASYNC and the other should fire after..

MY QUESTION: Does this hillbilly test actually show that each of the shells are what they are. Synchronous and Asynchronous? if Yes cool, if not, why?

I don't see how that trick with timeouts demonstrates the async nature. How about this?

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db){
    if (err) throw err;

    //Find one document in our collection
    db.collection('allClasses').findOne({}, function(err, doc){
        console.log("Got the data!")

        //Print the result
        console.dir(doc);

        //close the DB
        db.close();
    });

    console.log("Data is being fetched and I do something else")
});

console.log("Mongo connection is being set up and I do something else")

Output

sergio@soviet-russia ‹ master ●● › : ~
[0] % node test.js
Mongo connection is being set up and I do something else
Data is being fetched and I do something else
Got the data!
null