Websockets invalid value for Enum OpCode

Just flagging that this happened out in the wild.

│   e = ArgumentError: invalid value for Enum OpCode: 11                                                                                                                                                                                                                                  
│   stacktrace =                                                                                                                                                                                                                                                                          
│    11-element Vector{Base.StackTraces.StackFrame}:                                                                                                                                                                                                                                      
│     enum_argument_error(typename::Symbol, x::UInt8) at Enums.jl:93                                                                                                                                                                                                                      
│     OpCode at Enums.jl:212 [inlined]                                                                                                                                                                                                                                                    
│     getproperty at WebSockets.jl:41 [inlined]                                                                                              
│     readframe(io::HTTP.Connections.Connection{OpenSSL.SSLStream}, ::Type{HTTP.WebSockets.Frame}, buffer::Vector{UInt8}, first_fragment_opcode::HTTP.WebSockets.OpCode) at WebSockets.jl:154                                                                                             
│     readframe(io::HTTP.Connections.Connection{OpenSSL.SSLStream}, ::Type{HTTP.WebSockets.Frame}, buffer::Vector{UInt8}) at WebSockets.jl:128                                                                                                                                            
│     receive(ws::HTTP.WebSockets.WebSocket) at WebSockets.jl:683                                                                                                                                                                                                                         
│     iterate(ws::HTTP.WebSockets.WebSocket, st::Nothing) at WebSockets.jl:722                                                                                                                                                                                                            
│     iterate at WebSockets.jl:720 [inlined]                                                                                                            

I have no way to reproduce.

From the spec it appears this should never happen:

I’m using HTTP v1.10.16.

Anyone has an idea what this could mean? Serverside bug?

Looking at RFC 6455: The WebSocket Protocol it seems that 11-15 are not illegal, it says they are „are reserved for further control frames“. I‘m not sure if this would qualify as a bug in HTTP.jl. I would suggest to open an issue there.

EDIT: after a bit more thought, I think the above means that the reserved codes (3-7 and 11-15) are reserved for future extensions, so failing the connection would actually be the expected behavior here. Did the WS connection close after the error occurred?