setInterval y this.wait en casper.js

Necesito hacer un bucle de3 veces y 2 segundos entre cada iteración. Probé estas 3 opciones:

Opción 1

var casper = require('casper').create({
    verbose: false,
    logLevel: 'debug'
});

casper.start("http://google.com");

casper.on('remote.message', function(msg) {
    this.echo('remote message caught: ' + msg);
})

casper.thenEvaluate(function() {
    var x = 0;
    var intervalID = setInterval(function () {

       console.log("Using setInternal " + x);

       if (++x === 3) {
           window.clearInterval(intervalID);
       }
    }, 2000);

});

casper.run();

Observación: Nada apareció porque el guión terminó de inmediato antes de la primerasetInterval siendo llamado.

opcion 2

ReemplazadothenEvaluate() conthen() abajo

for (i=0; i<3; i++) {
    this.wait(2000);
    this.echo('Using this.wait ' + i);
}

Observación: Da salida 3 veces de inmediato y luego una larga espera desdethis.wait() es asincrónica. Esto no es lo que quiero porque quiero un retraso en el medio.

Opcion 3 Reemplace la parte enthen() con esto abajo. Estaba pensando en hacer una llamada recursiva awaitFunc() después de cadawait() siendo llamado.

var count = 0;
var waitFunc = function() {
    this.wait(2000, function() {
        if (count < 3) {
            casper.echo('Using this.wait ' + count);
            count++;
            waitFunc();
        }
    });

};

Observación: Nada impreso en la pantalla.

Así que mi pregunta es:¿Cómo hacer que this.wait o setInterval funcione en un bucle de 3 veces como este caso?

Respuestas a la pregunta(1)

Su respuesta a la pregunta