Я не думаю, что вы правильно понимаете setTimeout. Что он делает, так это выполняет функцию через определенный период времени
Лучший способ реализовать это поведение - сохранить метку времени его третьей попытки и сравнить ее с Date.now (), чтобы проверить, есть ли 30 минут бана истекли