Сделайте проще:
1) объявите глобальную переменную-счетчик, со значением, равным количеству запросов, которые нужно сделать,
2) в цикле запускаете все эти запросы, в обработчике (если не было ошибки) делаете декремент счетчика и проверяете его на 0 (если 0 - все ответы получены),
3) можно еще глобальный таймаут сделать, скажем на 10 секунд, если счетчик не 0 - сказать пользователю попробовать еще чуть позже.
P.S. А ошибка как минимум здесь может быть: for (i in trans_data) {
- i здесь используется, как будто она глобальная. Ее бы сначала объявить через var в функции.