Because "request" returns a promise? I created the deferred object because I'm waiting on multiple async operations (get gravatar url, download gravatar locally and upload to s3). Or am I missing something?
Also, it's often cleaner to use something like Q.nfcall to turn a callback accepting function (like request in your example) itself into a promise that can be chained. (I just noticed that this is contrary to Q's own documentation which surprisingly is pro-deferred.)