I thought the same at first, but according to the GLES2 spec, only the first error is returned, unlike in desktop GL where a list of errors is maintained. See http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf, section 2.5.

"When an error is detected, a flag is set and the code is recorded. Further errors, if they occur, do not affect this recorded code. When GetError is called, the code is returned and the flag is cleared, so that a further error will again record its code. If a call to GetError returns NO ERROR, then there has been no detectable error since the last call to GetError (or since the GL was initialized)."

I could re-arrange it so that we return Emscripten's error code first instead of the WebGL error if you like, but there should be only 1 error reported regardless.