It fixes a few places where we send the wrong native error code to Java, resulting it being mapped to UNKNOWN.
It unifies our mapping of the native category to the Java equivalent. We had multiple places this was happening, and they were slightly divergent resulting in unexpected behavior.
Also, after the sync error refactors, most Protocol and session errors had ended up in the wrong category, resulting in them being reported as UNKNOWN.
Closes #7823
This PR accomplishes three things: