Nice change.

On thing though - I think something like a 10 second sleep after you log the error would be good here just in case monitor_events() gets into a situation where it's raising exceptions immediately to prevent a tight loop.