public T call() throws Exception { final T result1 = step1.call(); if (result1.isSuccess() && !Thread.currentThread().isInterrupted()) { return step2.call(); } else { return result1; } }