Интервал будет продолжаться до тех пор, пока вы не очистите его, поэтому вам нужно сделать, чтобы таймер достиг нуля, очистить интервал и затем установить тайм-аут, который перезапустит интервал.(Чтобы очистить интервал, вам сначала нужно сохранить возвращенный дескриптор в переменной.) Здесь может помочь немного рекурсии:
function startTimer(duration, display) {
var timer = duration, minutes, seconds;
var timerInterval = setInterval(function () {
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
if (--timer < 0) {
window.clearInterval(timerInterval);
window.setTimeout(() => startTimer(duration, display), 5000);
}
}, 1000);
}