Нормальная ли практика общаться с микросервисами через промисы?
Есть подобная конструкция:
const getData = (data) => {
return new Promise((resolve, reject) => {
rpc.send(data);
rpc
.onRequest(newData => resolve(newData))
.onError(error => reject(error));
})
}
где RPC - какой-то протокол, через который идет общение с микросервисом.
В связи с этим появляются вопросы:
1) Что, если ответ от микросервиса будет долгим, а запросов генерироваться будет много? Ведь по идеи стек вызова может переполниться из-за кучи промисов с состоянием pending.
2) Что, если ответ не придет вообще? Ведь промис просто так не reject'нится, опять упираемся в переполнение стека. Первое приходит в голову setTimeout, который будет сам reject'ить промис по истечению определенного времени, но тогда данные будут утеряны, которые возможно могли придти бы позже.