code: @Override
      public SIBusMessage receiveWithWait(SITransaction siTran,
                                          long timeout)
                      throws SISessionUnavailableException, SISessionDroppedException,
                      SIResourceException, SIConnectionLostException, SILimitExceededException,
                      SIErrorException,
                      SIIncorrectCallException
      {
          if (TraceComponent.isAnyTracingEnabled() && CoreSPIConsumerSession.tc.isEntryEnabled())
              SibTr.entry(
                          CoreSPIConsumerSession.tc,
                          "receiveWithWait",
                          new Object[] { this, new Long(timeout), siTran });
  
          checkTransaction(siTran, "TRANSACTION_RECEIVE_USAGE_ERROR_CWSIP0777");
  
          SIBusMessage jsMsg = null;
  
          boolean sucessful = false;
  
          //Try to receive a message from the LCP
          try
          {
              jsMsg =
                              _localConsumerPoint.receive(timeout,
                                                          (TransactionCommon) siTran);
              sucessful = true;
          } catch (SINotPossibleInCurrentConfigurationException e)
          {
              // No FFDC code needed.
  
              // This case indicates that the destination has changed in some way
              // Probably receiveAllowed = false.
              if (TraceComponent.isAnyTracingEnabled() && CoreSPIConsumerSession.tc.isEntryEnabled())
                  SibTr.exit(CoreSPIConsumerSession.tc, "receiveWithWait", "SISessionUnavailableException");
              throw new SISessionUnavailableException(
                              nls.getFormattedMessage(
                                                      "CONSUMER_CLOSED_ERROR_CWSIP0177",
                                                      new Object[] { _destAddr.getDestinationName(),
                                                                    _messageProcessor.getMessagingEngineName() },
                                                      null));
          }
  
          if (TraceComponent.isAnyTracingEnabled() && UserTrace.tc_mt.isDebugEnabled())
              UserTrace.trace_Receive(siTran, (JsMessage) jsMsg, _destAddr, getIdInternal());
  
          if (TraceComponent.isAnyTracingEnabled() && CoreSPIConsumerSession.tc.isEntryEnabled())
              SibTr.exit(CoreSPIConsumerSession.tc, "receiveWithWait", jsMsg);
  
          //return the message or null
          return jsMsg;
      }
docs: /*
  (non-Javadoc)
  
  @see com.ibm.wsspi.sib.core.ConsumerSession#receiveWithWait(com.ibm.wsspi.sib.core.SITransaction, long)