Hooks

This will result in a busy loop if another thread holds the lock; at the very least, sleep for a little bit on collision like sleep(0.1) ... since we are doing this during a request there's not too much point in backing off the sleep time.