code: func ReadResp(r io.Reader) (correlationID int32, b []byte, err error) {
  	dec := NewDecoder(r)
  	msgSize := dec.DecodeInt32()
  	correlationID = dec.DecodeInt32()
  	if err := dec.Err(); err != nil {
  		return 0, nil, err
  	}
  	// size of the message + size of the message itself
  	b, err = allocParseBuf(int(msgSize + 4))
  	if err != nil {
  		return 0, nil, err
  	}
  
  	binary.BigEndian.PutUint32(b, uint32(msgSize))
  	binary.BigEndian.PutUint32(b[4:], uint32(correlationID))
  	_, err = io.ReadFull(r, b[8:])
  	return correlationID, b, err
  }
docs: // ReadResp returns message correlation ID and byte representation of the whole
  // message in wire protocol that is returned when reading from given stream,
  // including 4 bytes of message size itself.
  // Byte representation returned by ReadResp can be parsed by all response
  // reeaders to transform it into specialized response structure.