Returning success from two separate locations and implicitly bypassing
a bunch of checks seems to be asking for trouble -- it's better if we are
explicit about what is being skipped. This also lets us consolidate the
metrics-related final actions to avoid code duplication.
(this Diff is meant to be an exact transformation)