code: func compressPayload(inp []byte) (*bytes.Buffer, error) {
  	var buf bytes.Buffer
  	compressor := lzw.NewWriter(&buf, lzw.LSB, lzwLitWidth)
  
  	_, err := compressor.Write(inp)
  	if err != nil {
  		return nil, err
  	}
  
  	// Ensure we flush everything out
  	if err := compressor.Close(); err != nil {
  		return nil, err
  	}
  
  	// Create a compressed message
  	c := compress{
  		Algo: lzwAlgo,
  		Buf:  buf.Bytes(),
  	}
  	return encode(compressMsg, &c)
  }
docs: // compressPayload takes an opaque input buffer, compresses it
  // and wraps it in a compress{} message that is encoded.