Using a BO is for a maintenance purpose (All the business code is in the BO, all the connections against SQL server run from a BO to DL)
And the intermediate SP (or execute as.. revert) is for a security purpose: I never expose a SP directly in the AppUser schema.
RETURN will exit the code loop immediately. It can return an integer, but that is typically used to show success or failure and isn't what you are looking for in this case.
Thanks again to Greg for pointing this out.