По после запроса на then почему то не работает и кидает трейс на моменте compileScope.$apply();
Приведи трейс, я на 90% уверен что у тебя там ошибка вида $digest already in progress.
Это пожалуй самое гнилое место в ангуляре и я дико рад тому что они избавились от этого во втором. Перед запуском $digest цикла (то что вызывается у $rootScope когда вы делаете apply) надо бы проверить не запущен ли он. Сервис $http автоматически запускает $digest по завершению запроса, если что.
Самый простой способ обезапасить себя от подобного - использовать сервис $timeout, который является оберткой и сам хэндлит $digest цикл.