Maybe we should do ``return Q(self)`` up at the top of this function and then do ``.thenResolve(self)`` here for clarity?