Pure: classify the server's answer to the handshake — 'ok', 'failed', or
null for a frame that is not about authentication at all.
Absence of an error is never an acknowledgement, so 'ok' is only ever
returned for a frame that says so. An error frame counts as a refusal
because the handshake is the only thing outstanding when it arrives, and it
is recognised by status: 'error' as well as by type: 'error': OpenAlgo's
proxy answers a bad key with { status:'error', code, message } and no type
at all, so keying only on the type left the one refusal that matters
unclassified and retried on a timer until the key got rate limited.
Pure: classify the server's answer to the handshake — 'ok', 'failed', or null for a frame that is not about authentication at all.
Absence of an error is never an acknowledgement, so 'ok' is only ever returned for a frame that says so. An error frame counts as a refusal because the handshake is the only thing outstanding when it arrives, and it is recognised by
status: 'error'as well as bytype: 'error': OpenAlgo's proxy answers a bad key with{ status:'error', code, message }and no type at all, so keying only on the type left the one refusal that matters unclassified and retried on a timer until the key got rate limited.