I think you should maybe return the result of `p.then` here? Q promises don't work quite like Twisted deferreds (p.then returns a new promise, not p).