Почему дважды а то четырежды уходит запрос?
Удалять надо таймер, если он уже установлен. Что-то вродеvar timerId = 0;
promoAnswer() {
  if (timerId > 0) {
    clearTimeout(timerId);
  }
  timerId = setTimeout(...)
}
Посмотрите в сторону Debounce (Debouncing),
это то, что Вам нужно.