docs: public T get(long timeoutMs) throws InterruptedException, JoynrWaitExpiredException, ApplicationException,
                                   JoynrRuntimeException {
          try {
              statusLock.lock();
              if (this.status.getCode() == RequestStatusCode.OK) {
                  return value;
              }
  
              if (exception != null) {
                  if (exception instanceof ApplicationException) {
                      throw (ApplicationException) exception;
                  }
                  throw (JoynrRuntimeException) exception;
              }
  
              while (RequestStatusCode.IN_PROGRESS.equals(status.getCode())) {
                  boolean awaitOk = statusLockChangedCondition.await(timeoutMs, TimeUnit.MILLISECONDS);
                  if (!awaitOk) {
                      this.status.setCode(RequestStatusCode.ERROR);
                      throw new JoynrWaitExpiredException();
                  }
              }
  
              // check if an exception has arrived while waiting
              if (exception != null) {
                  if (exception instanceof ApplicationException) {
                      throw (ApplicationException) exception;
                  }
                  throw (JoynrRuntimeException) exception;
              }
  
              return value;
          } finally {
              statusLock.unlock();
          }
      }