Yup, sorry for all that confusion, there has been a change in behaviour in a recent update that "broke" older code. Now Particle.subscribe() handlers are only getting into effect a few seconds after loop() started the first time.
Particle.subscribe()
loop()
You can find a discussion about this here