docs: public boolean isDue() {
          if(neverUpdate)     return false;
          if(dataTimestamp == 0)
              dataTimestamp = getDataFile().file.lastModified();
          long now = System.currentTimeMillis();
          
          retryWindow = Math.max(retryWindow,SECONDS.toMillis(15));
          
          boolean due = now - dataTimestamp > DAY && now - lastAttempt > retryWindow;
          if(due) {
              lastAttempt = now;
              retryWindow = Math.min(retryWindow*2, HOURS.toMillis(1)); // exponential back off but at most 1 hour
          }
          return due;
      }