As I pointed out before I'm pretty sure you can just return the chained deferred. The way it works is basically this

   calculatingAgesOfAllPeople().then(function mean(arr) { return _.sum(arr)/arr.length })
   //will return a promise that resolves with the mean of all ages
   //or
   gettingListOfPeople().then(function(people) { return calculateFullDetails(people[0]) }) //where calculateFullDetails returns deferred
   //will return a promise that will resolve when both gettingListOfPeople and calculateFullDetails have resolved.