Bloqueo de la función "esperar" en javascript?

Como parte de un proyecto Javascript en el que estoy trabajando, hay algunas llamadas ajax síncronas (Supongo que eso lo hace "sjax", pero me estoy desviando). Ahora estoy escribiendo un panel de depuración que me permitiría probar el sitio con algunas condiciones de red simuladas artificialmente envolviendo$.ajax. Cosas simples: falsificar una respuesta 500, etc., y hacer que las llamadas ajax tarden mucho más.

Para las llamadas asincrónicas, es simple. Cuando la respuesta real regrese, agregue unsetTimeout para que espere el tiempo de respuesta artificial antes de activar la devolución de llamada. Sin embargo, esto no funciona con las llamadas síncronas obviamente, ya quesetTimeout no es sincrónico.

Entonces, ¿hay alguna manera de hacer que un programa Javascript realice una espera de bloqueo durante un tiempo determinado?

Lo único que se me ocurrió sería algo como esto:

function wait(ms) {
    var start = +(new Date());
    while (new Date() - start < ms);
}

¿Hay una mejor solución?

(Además, suponga que hay una buena razón para bloquear las llamadas ajax ...:-\)

Respuestas a la pregunta(3)

Su respuesta a la pregunta