docs: @FFDCIgnore({ ConfigStartException.class })
      private Future<?> start() {
          Future<?> future = null;
          boolean startUpFailure = false;
          try {
              update();
          } catch (ConfigStartException cse) {
              //Swallow the exception, don't FFDC
              //At the moment this exception means that we could not properly query the config source
              //It was introduced as a quick fix for issue #3997 but we might reconsider the design at some point
              startUpFailure = true;
          } catch (Exception e) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "start: Initial Update failed: {0}. Exception: {1}", this, e);
              }
              future = Futures.immediateFailure(e);
          }
  
          //if there was an initial startup failure, don't start the polling thread
          if (!startUpFailure && future == null && interval > 0) {
              Refresher refresher = new Refresher(this);
              future = executor.scheduleWithFixedDelay(refresher, interval, interval, units);
              refresher.future = future;
          }
          return future;
      }