code: public T execute(final Task<T> taskToWrap) throws DevFailed {
          int triesLeft = tries;
          do {
              try {
                  return taskToWrap.call();
              } catch (final DevFailed e) {
                  triesLeft--;
                  // Are we allowed to try again?
                  if (triesLeft <= 0) {
                      // No -- throw
                      logger.error("Caught exception, all retries done for error: {}", DevFailedUtils.toString(e));
                      throw e;
                  }
  
                  // Yes -- log and allow to loop
                  logger.info("Caught exception, retrying... Error was: {}" + DevFailedUtils.toString(e));
                  try {
                      Thread.sleep(delay);
                  } catch (final InterruptedException e1) {
  
                  }
              }
          } while (triesLeft > 0);
          return null;
  
      }
docs: Invokes the wrapped Callable's call method, optionally retrying if an
  exception occurs. See class documentation for more detail.
  
  @return the return value of the wrapped call() method