Hmmm... I still prefer the C/C++ style of handling mutexes, semaphores, et al. This callback jazz looks messy. But there are certainly advantages too so long as you can stay on top of them. But that's the thing though; this looks like it'd be a nightmare to debug if something goes wrong.