I worry a little bit about transactions and race conditions. In particular, this transaction won't end until the request does, which means if the worker is especially speedy, it could try and look up the `CourseEmail` object before it has been committed.