Invoked Q's nfcall() function to convert request to a promise. This arguably results in a cleaner syntax.
Also closed the promise chain with done() to avoid swallowing the exceptions raised in the then()/fail() callbacks.