WTF is a reentrancy attack and how do I prevent it?