code: @Override
      public void waitForData() throws CouldNotPerformException, InterruptedException {
          try {
              if (isDataAvailable()) {
                  return;
              }
              logger.debug("Wait for " + this.toString() + " data...");
              getDataFuture().get();
              dataObservable.waitForValue();
          } catch (ExecutionException | CancellationException ex) {
              if (shutdownInitiated) {
                  throw new InterruptedException("Interrupt request because system shutdown was initiated!");
              }
              throw new CouldNotPerformException("Could not wait for data!", ex);
          }
      }
docs: {@inheritDoc}
  
  @throws CouldNotPerformException {@inheritDoc}
  @throws InterruptedException     {@inheritDoc}