¿Por qué llamar a setTimeout con paréntesis no inicia una nueva pila de llamadas?

El siguiente código tiene una nueva pila de llamadas cuando el depurador se activa en d (jsfiddleaqu)

function c() {
    setTimeout( d, 1000 );
}

function d() {
    debugger;   
}

c();

Si modificamos el código para usarsetTimeout( d(), 1000 ); que tiene corchetes (paréntesis:)

function c() {
    setTimeout( d(), 1000 );
}

function d() {
    debugger;   
}

c();

then el callstack tiene c () y d () (jsfiddleaqu). ¿Por qué

Respuestas a la pregunta(3)

Su respuesta a la pregunta