Я не понял. У тя ща перед запросом задержка 3с. Тебя это устраивает или нет?
Запоминай время последнего запроса, а также чекай readyState последнего запроса. Вместо readyState можешь просто по success'у выставлять флаг.
момент запроса
заняты = нет
запрос затупил = (момент запроса - сейчас) > 3 сек
если (не заняты или запрос затупил)
если запрос затупил то делаем аборт
делаем запрос, заняты = да, момент запроса = сейчас (по саксессу заняты = нет)
Вместо заняты можно просто обнулять момент запроса, что будет означать что запрос уже завершен, то есть не заняты.