Too many clients still assume a valid object/string return and skip any type checks or try/catch. It’s a mess.
I believe that , u need a stronger convention in the NIP itself, lik a standardized error object { error: "rejected" }... so clients stop guessing what “failure” means.