def decode_headers(frame)
      if frame[:payload].is_a? Buffer
        frame[:payload] = @decompressor.decode(frame[:payload])
      end

    rescue CompressionError => e
      connection_error(:compression_error, e: e)
    rescue ProtocolError => e
      connection_error(:protocol_error, e: e)
    rescue StandardError => e
      connection_error(:internal_error, e: e)
    end
def decode_headers(frame)
      if frame[:payload].is_a? Buffer
        frame[:payload] = @decompressor.decode(frame[:payload])
      end

    rescue CompressionError => e
      connection_error(:compression_error, e: e)
    rescue ProtocolError => e
      connection_error(:protocol_error, e: e)
    rescue StandardError => e
      connection_error(:internal_error, e: e)
    end
Decode headers payload and update connection decompressor state.

 The receiver endpoint reassembles the header block by concatenating
 the individual fragments, then decompresses the block to reconstruct
 the header set - aka, header payloads are buffered until END_HEADERS,
 or an END_PROMISE flag is seen.

 @param frame [Hash]