Admittedly, I used the same logic that sync is doing. I didn't want to change too much given the celery work going on.

You're right, the task will reflect failed. The report is stored in the publish history but does not make it to the task itself.