This might be a surprising thread to call the user callback on. It'll also mean the (possibly expensive) user callback sits on the lock.