Just found out the hard way that Arduino delay(xxx) does NOT work reliably in an interrupt service routine.
It does work: sometimes, kinda - which made debugging more difficult. I lost a few hours finding this undocumented "feature".
Easy workaround: for(j=xxx; j; j--) delayMicroseconds(1000);
My suggestion is to update the documentation for delay()http://arduino.cc/en/Reference/Delay
to included in the "caveat" section
"delay() does NOT work reliably in an interrupt service routine"
to save debug time for other Arduino coders.