Todo parece bien.
Lo unico que me da un poco de desconfianza es el EMS. (Y eso por que no lo he utilizado

)
Haz una prueba.
Copia tu función y ejecutala desde linea de comandos.
Correla desde linea de comandos y desde la aplicación y dinos si siguen los mismos sintomas.
saludos