Durandal: ¿Cómo desviarse de la vista actual dentro de la función activar () de esa vista?

Tengo los siguientes

function activate(routeData) {
    // make dataservice call, evaluate results here.  If condition is met, reroute:
    if (true){
       router.navigateTo("#/someRoute");
     }
    alert ("should not be shown");
}

La alerta está siendo golpeada sin embargo, yentonces la vista cambia

¿Cómo puedo alejarme por completo del elemento actual e impedir que se golpee cualquier otro código en esa máquina virtual?

Actualizar:

Traté de usarguardroute pero tengo que activar viewModel para llamar al servicio de datos que devuelve los datos que determinan si debo o no volver a enrutar. El uso de guardroute evita totalmente que se llame al servicio de datos (ya que no se alcanzará nada en la función de activación)

También traté de regresar de laif bloque, pero esto todavía carga la vista / viewAttached / etc, por lo que la UX es errónea.

Respuestas a la pregunta(4)

Su respuesta a la pregunta