(refactor) campaign_page: use deferred.promise