The first step (after validation) of throwing an object is to place it on the ground.
Placing a "mob holder" object on the ground causes it to release the held mob and delete itself.
A runtime would then occur as you tried to throw something which just deleted itself.
I overrode on_thrown on /obj/item/clothing/head/mob_holder so that it calls release instead of dropItemToGround and returns the held mob instead of the item.
The result is that you can now walk around with a backpack full of mice and throw them at people, just like in real life.