I know I mentioned in hipchat that I thought we needed an additional queue to make this non-racy. I think I've resolved it by moving some redis maintenance stuff out of the async task, since redis access is reasonably quick to have in the main thread.