Oh wow.
Trying out @Airy 's %ActionResult% suggestion, I find that the Return action in the receiving non-subroutine macro exits like a Cancel This Macro macro, rather than Cancel Just This Macro.
This is different from a regular subroutine with a Return action that returns its value and exits like Cancel Just This Macro.
So if you never plan to call an exit-with-return-macro-that-is-not-a-subroutine, using a Return action instead of Cancel Just This Macro is not an issue.
If you do, however, it looks like the calling macro gets cancelled after calling a non-subroutine macro that exits like this. Nothing after the call will get executed.
To prevent that from happening you could call the exit-with-return-macro-that-is-not-a-subroutine macro asynchronously.
With my limited personal random access memory this represents a gotcha that would definitely get me--repeatedly.
Rather than remember to handle it with this care, I'm sticking with @Airy 's Cancel Just This Macro.