```
if not len(events):
    return events
```

There is probably not a good reason to execute the rest of this function (calling into gatherResults with an empty list, setting up some callbacks, etc) if the end result is just that the empty list of events gets returned.  You can just return the empty list at the top and not create any more deferreds than necessary.