docs: public byte[] read() throws IOException {
          if (m_exception.get() != null) {
              throw m_exception.get();
          }
  
          byte bytes[] = null;
          if (m_activeConverters.get() == 0) {
              bytes = m_available.poll();
          } else {
              try {
                  bytes = m_available.take();
              } catch (InterruptedException e) {
                  throw new IOException(e);
              }
          }
          if (bytes != null) {
              m_availableBytes.addAndGet(-1 * bytes.length);
          }
          return bytes;
      }