You might want to call `twisted.internet.task.deferLater` (and return it) that takes a function and returns a deferred that gets fired when that function's deferred is fired. This way it chains `check_for_events` recursively.