backend: Rework internal error return semantics