Do not fail! or assert!. Return ProtocolError