Unable to use connect-busboy in node js

I want to upload image using connect-busboy in node.js. Using reference https://www.npmjs.org/package/connect-busboy , I wrote the code:

 router.post('/upload', function(req, res) {

    req.pipe(req.busboy);

    console.log('1')
   req.busboy.on('file', function(fieldname, file, filename) {
   console.log('2')
    var fstream = fs.createWriteStream('../uploads/' + filename); 
    file.pipe(fstream);
    fstream.on('close', function () {
        res.redirect('back');
    });
   });
   console.log('4')
 });

But when I try to upload an image, most of the times the image is uploaded in the given path but sometimes, due to asynchronous nature of js calls, code inside req.busboy.on is skipped and console.log('4') get executed durectly after console.log('1'). I am not able to understand why it is happening as I think req.busboy.on is implemented using callback feature and so code should be executed every time.

PLease help me out here?

Edit 1:

Okk...My above problem is solved but now, I am not able to get other fields of the form using req.body . It is coming empty json. I have tried multer too, but I am not able to run it properly.

Okk....it was my bad, the problem is when I submit empty form, the program crashes. For that, I need to put some check.