code: private Runnable runStepAndResetIsRunning(Runnable runnable) {
          return () -> {
              try {
                  runnable.run();
              } catch (Throwable t) {
                  //we're in control of the runnable and it should catch it's own execeptions, but just in case it doesn't
                  log.error("Exeception while running a step", t);
              } finally {
                  isRunningAStep.getAndSet(false);
              }
          };
      }
docs: Wrap the runnable which executed the step, and only unset currentlyExecutingStep when it has completed
  If the step blocks and can't be interrupted, then we don't want to start any other steps