В конце функции он тоже пустой
что такое в конце функции? Если ты имеешь в виду тело этого метода и ты пытаешься получить заполненный deviceList перед последней } то это не получится. Потому что провешивание слушателей у тебя происходит последовательно друг за другом, а код внутри коллбэков будет выполнен только, когда будет получен либо success, либо failure