A contagem regressiva do GreaseMonkey não está funcionando?

Estou muito confuso, com o greasemonkey setTimeout simplesmente não está funcionando, ele nunca chama a função, procurando pessoas on-line dizem que o greasemonkey não suporta setTimeout, existe alguma maneira de fazer meu objetivo (abaixo) funcionar?

function countdown(time, id) {
   if(document.getElementById(id)) {
       var name = document.getElementById(id);
       var hrs = Math.floor(time / 3600); 
       var minutes = Math.floor((time - (hrs * 3600)) / 60); 
       var seconds = Math.floor(time - (hrs * 3600) - minutes * 60);

       if(hrs>0) {
            name.innerhtml = hrs + 'h ' + minutes + 'm';
       } else if(minutes>0) {
            name.innerhtml = minutes + 'm ' + seconds + 's';
       } else {
            name.innerhtml = seconds + 's';
       }
   } else {
       setTimeout('countdown(' + --time + ',' + id + ')', 100);
   }

   if(time <= 0)
      window.location.reload();
   else
      setTimeout('countdown(' + --time + ',' + id + ')', 1000);
} 

questionAnswers(2)

yourAnswerToTheQuestion