Yo diría que dentro de la función
cambiar() te falta declarar la variable
ajax como local adjuntandole
var, creo que si la variable es global se sobreescribe y no funciona como se espera.
Prueba eso y nos comentas
Por cierto, ¿cómo notas los retardos con 50ms, 5ms y 100ms

? Quizás deberías hacer la prueba más lentamente con retardos más largos para ver qué pasa ahí.
Un saludo