@Override
 public boolean isCanceled() {
   if (super.isCanceled()) {
     return true;
   }
   if (job.shouldReschedule() && job.isBlocking()) {
     if (blockTime == 0) {
       blockTime = System.currentTimeMillis();
     } else if (System.currentTimeMillis() - blockTime > THRESHOLD) {
       // We've been blocking for too long
       wasBlocking = true;
       return true;
     }
   } else {
     blockTime = 0;
   }
   wasBlocking = false;
   return false;
 }