Well, using the codecallbacks to place your timer probably isn't the best idea. Put it in a gametype file, at the callback_playerdamage() method.
But, to answer your question: yes: it is called, but no damage is returned because the victim is undefined. To actual produce any damage, the victim and damage amount has to be passed to the finishPlayerDamage() function. If either the victim or damage amount (iDamage) is undefined, no effect is produced. And that is precisely what is happening here - both bots are receiving damage and the code can't work out which one is the victim, so it returns 0 damage to them. Creating the timer will solve that problem.
This solution is one that Perry Heart aka PEZZALUCIFER of Pezbot fame came up with. You might want to check out his code for it.