CasperJs, ¿cómo repetir un paso X veces en WaitTimeout?

Entonces, lo que quiero hacer es crear una función casperJS que nos permita repetir un paso X veces, actualizando primero la página, cuando esta función de paso alcanza el tiempo de espera.

Para pruebas poco confiables debido a un error / congelamiento de página específico en este momento y reduzca el porcentaje de falsos negativos.

Solo tengo un problema, no sé cómo romper este ciclo, porque estoy en el alcance de IIFE, vea el siguiente código:

var echoTest = function(){
    casper.echo('Hi');
};
var trueFunction = function(){
    return true;
};

var verifyFailedTest = function(number, trueReturn, thenFunction){
    var i = 0;
    //outer:       <-------
    for (; i <= number; i++){   // <------ how to break this loop in my function then()
        //IIFE
        (function(index){
            if (index < number-1){
                //Execute 'number-1' times the then() step (reload the page each time) if timeout or until trueReturn returns true
                casper.then(function(){
                    casper.waitFor(function checkReturnTrue(){
                            return trueReturn();
                        }
                        , function then() {
                            thenFunction();
                            //break outer; break; return false;    <------ here where I want to break the loop
                        }
                        , function timeout() { 
                            casper.reload();
                        });
                });
            }
            //last execution, will return the normal error if it fails each time
            else if (index === number){
                casper.then(function(){
                    casper.waitFor(function checkReturnTrue(){
                            return trueReturn();
                        }
                        , function then() {
                            console.log('else');
                            thenFunction();
                        });
                });
            }
            else{console.log('verifyFailedTest() bug');}
        })(i);
    }
};

Intenté con la etiqueta, pero recibí un error de sintaxis.

Ejecución:

casper.test.begin('\n*************** Suite of planned test : scenario 1 **************\n', 1, function suite(test) {
    casper.start('https://www.google.fr/', function() {
        verifyFailedTest(3, trueFunction, echoTest);
    });

    casper.run(function() {
        test.done();
    });
});

});

Respuestas a la pregunta(2)

Su respuesta a la pregunta