The function CastSpellByID() is supposed to be protected and only accessible by the Blizzard user Interface. And it is, but for some reason Blizzard forgot to protect it for certain instant pet spells. This means you can abuse it with lua to create scripts like auto cast spell X on event Y.
Example macro: (very basic)
Save it & click it once and your pet (Felhunter) will now auto interrupt your current target whenever the target is starting to cast a spell./run local f=f or CreateFrame("Frame");f:SetScript('OnUpdate',function(s,e)if UnitExists('target')then local name=UnitCastingInfo("target")if name then CastSpellByID(19647)end end end)