private void FinishAwareSleep(StageExecution execution) { long endTime = _monitor.nextCheckTime(); while (CurrentTimeMillis() < endTime) { if (!execution.StillExecuting()) { break; } try { sleep(min(10, max(0, endTime - CurrentTimeMillis()))); } catch (InterruptedException e) { execution.Panic(e); break; } } }