@Override
  public void waitFor() {
    try {
      while (!isDone()) {
        if (mySemaphore.tryAcquire(100L, TimeUnit.MILLISECONDS)) {
          mySemaphore.release();
        }
      }
    }
    catch (InterruptedException ignored) {
    }
  }
@Override
  public void waitFor()