Если я правильно понял ваш код, то не хватает возврата результата dfd по всей цепочке рекурсии. И реджектов в случае ошибки:
if ( (groupIDArray.length - currentGroupIDIndex) > 1){
*!* dfd = */!* initGroupInfo(token, groupArray, groupIDArray, ++currentGroupIDIndex);
}else{
console.log('Загрузка информации о группах завершена');
dfd.resolve();
}
}else{
console.log('Ошибка: initGroupInfo(2)'); *!* dfd.reject(); */!*
}
}else{
console.log('Ошибка: initGroupInfo(1)'); *!* dfd.reject(); */!*
}
Ну и обработка ошибки:
dfd.done(function(){
console.log('Закончили. Можно запускать другую функцию!')
})
*!* .fail(function(){ */!*
*!* console.log('ошибка'); */!*
*!* }); */!*
Хотя лучше бы вы выложили ваш пример на
https://jsfiddle.net/ чтобы там можно было сразу проверить.