code: @Override
      public VirtualConnection read(long numBytes, TCPReadCompletedCallback userCallback, boolean forceQueue, int timeout) {
          // Call the async read with a flag showing this was not done from a queued request.
          return read(numBytes, userCallback, forceQueue, timeout, false);
      }
docs: Note, a separate thread is not spawned to handle the decryption. The asynchronous
  behavior of this call will take place when the device side channel makes a
  nonblocking IO call and the request is potentially moved to a separate thread.
  
  The buffers potentially set from the calling application will be used to store the
  output of the decrypted message. No read buffers are set in the device channel. It
  will have the responsibility of allocating while we will have the responsibility of
  releasing.
  
  @see com.ibm.wsspi.tcpchannel.TCPReadRequestContext#read(long, TCPReadCompletedCallback, boolean, int)