if function argument

When I run something like this:

execute if predicate wep_station:recipes/structures/2x1 unless function wep_station:recipe_handler/2x1/2x1_dispatcher run return run say hi

Example case, the predicate passes, so we move on to the function, and the function is tested, I have a group of questions: First, when I invoke a function with the if/unless argument, do it's effects stay although it's just a condition check? Like if a score is modified in that function does this modification stay? So in other words the function is just summoned normally except that we expect a return value from it?

Second, the only way to return a false is just by doing /return false or encountering an exception, right?

And lastly, this should be similar to other programming langs but.. if the predicate fails, the function isn't checked, right?

Continue to help post