docs: @Override
      public void waitForFinish() throws IOException
      {
          if (future == null)
          {
              throw new IllegalStateException("not started");
          }
          try
          {
              future.get();
          }
          catch (InterruptedException | ExecutionException ex)
          {
              throw new IOException(ex);
          }
      }