Use exceptions in HeaderDecoder
Use exceptions in EncodingContext
Rename HeaderDecoder.decodeNextOpcode to processNextOpcode
Bind to 'this' instead of using 'self'
Use HeaderTable.getEntry() in HeaderTable.tryReplaceEntry()
Make encodingContext a member variable of Decoder
Make emitFunction a member variable of Decoder
Add some comments
Rearrange opcode order in HeaderDecoder.processNextHeaderRepresentation
Add checking of header names and values
Use constant-time string comparison
Check for name/value validity when decoding
Mark some Decoder functions as private
Check for name/value validity in HeaderEncoder
Add comments in header_decoder.js

Also change Decoder.hasData to hasMoreData.
Convert " to '
Rename Decoder.decodeNextString_ to decodeNextOctetSequence_
Add comments in header_encoder.js
Change first argument of Encoder.encodeInteger
Use constants for opcodes and prefix lengths