code: @Override
      public int read(final byte[] output, final int offset, final int length) throws TTransportException {
          int read = 0;
          int index = offset;
          int space = length - offset;
          while (space > 0) {
              byte aByte = readAsynchrously();
              output[index] = aByte;
              space--;
              index++;
              read++;
          }
          return read;
      }
docs: Reads from the shared input queue, blocking if there is not enough input
  in the buffer. It's the only way we can emulate the synchronous nature of
  TTransport using netty.