code: private void blockUntilSendable(final AbstractBody msg) {
          assertLocked();
  
          while (isWorking() && !isImmediatelySendable(msg)) {
              try {
                  notFull.await();
              } catch (InterruptedException intx) {
                  LOG.log(Level.FINEST, INTERRUPTED, intx);
              }
          }
      }
docs: Blocks until either the message provided becomes immediately
  sendable or until the session is terminated.
  
  @param msg message to evaluate