I'm still learning the node.js ropes and am just trying to get my head around what I should be deferring, and what I should just be executing.

I know there are other questions relating to this subject generally, but I'm afraid without a more relatable example I'm struggling to 'get it'.

My general understanding is that if the code being executed is non-trivial, then it's probably a good idea to async it, as to avoid it holding up someone else's session. There's clearly more to it than that, and callbacks get mentioned a lot, and I'm not 100% on why you wouldn't just synch everything. I've got some ways to go.

So here's some basic code I've put together in an express.js app:

```
app.get('/directory', function(req, res) {
        process.nextTick(function() {
            Item.
                find().
                sort( 'date-modified' ).
                exec( function ( err, items ){
                    if ( err ) {
                        return next( err );
                    }
                    res.render('directory.ejs', {
                        items : items
                    });
                });
        });
    });

```

Am I right to be using `process.nextTick()` here? My reasoning is that as it's a database call then some actual work is having to be done, and it's the kind of thing that could slow down active sessions. Or is that wrong?

Secondly, I have a feeling that if I'm deferring the database query then it should be in a callback, and I should have the actual page rendering happening synchronously, on condition of receiving the callback response. I'm only assuming this because it seems like a more common format from some of the examples I've seen - if it's a correct assumption can anyone explain *why* that's the case?

Thanks!