code: protected final boolean canceled() {
          if (DEBUG_SLEEP != null) {
              try {
                  Thread.sleep(DEBUG_SLEEP);
              } catch (InterruptedException x) {}
          }
          if (status == ERROR) {
              return true; // recent call to data() failed
          }
          long now = System.currentTimeMillis();
          long elapsed = now - lastNewsTime;
          if (elapsed > timeout()) {
              status = CANCELED;
              LOG.log(Level.FINE, "{0} canceled due to {1}msec inactivity after {2}msec", new Object[] {uri, elapsed, now - start});
              return true;
          } else {
              return false;
          }
      }
docs: Checks whether the task has been canceled.
  If the rendering page fails to send a heartbeat within a certain amount of time,
  the user is assumed to have moved on.
  Therefore {@link #compute} should periodically say:
  {@code if (canceled()) return;}
  @return true if user seems to have abandoned us, false if we should still run