Как не пропускать событие во время выполнения с задержкой?
зачем таймаут для этого?

https://jsfiddle.net/9um3jxq0/

snippet
Зачем делать какую нибудь задержку и ты можешь отключать ввод данных при проверке 
это перед setTimeout
function someFunc() return false;
твое поле ввода.removeEventListener(твой код который добавляет);
твое поле ввода.addEventListener("keypress", someFunc);
в проверке в конце добавляешь обработчик и удаляешь 
твое поле ввода.addEventListener(твой код который добавляет);
твое поле ввода.removeEventListener("keypress", someFunc);