docs: public void execute(RpcManager rpcManager, long waitTimeBetweenRetries, TimeUnit unit) throws Throwable {
        if (backups.isEmpty()) {
           if (debug) {
              log.debugf("Executing '%s' but backup list is empty.", this);
           }
           return;
        }
  
        assertNotNull(rpcManager, "RpcManager");
        assertNotNull(unit, "TimeUnit");
        assertGreaterThanZero(waitTimeBetweenRetries, "WaitTimeBetweenRetries");
  
        do {
           if (trace) {
              log.tracef("Sending %s to %s", command, backups);
           }
           BackupResponse response = rpcManager.invokeXSite(backups, command);
           response.waitForBackupToFinish();
           Throwable throwable = extractThrowable(response);
           if (throwable == null) {
              if (trace) {
                 log.trace("Successfull Response received.");
              }
              return;
           } else if (!retryPolicy.retry(throwable, rpcManager)) {
              if (trace) {
                 log.tracef("Exception Response received. Exception is %s", throwable);
              }
              throw throwable;
           }
           unit.sleep(waitTimeBetweenRetries);
        } while (true);
     }