SetTimeout recursivo en javascript

¿Es posible ejecutar esto "indefinidamente", sin causar desbordamiento de pila o quedarse sin memoria?

function eternal(){
    var time = recalculateTime();
    doSomething();
    setTimeout(eternal,time);
}

setTimeout(eternal,200000);

No estoy usando setInterval, porque el tiempo de activación es variable.