replace IOException with Exception
fix race conditions
re-add Job to the queue after it failed DEFERRED