The problem was I was reloading the context under certain conditions so it was creating a new scope each time I did that. I was trying to refer to $scope.questions expecting content which was being reloaded with stale content.
Always make sure you are working within the expected scope! That's the lesson I learned here.