Applying @CaseyCarter's suggested forwarding changes
And adding `[[nodiscard]]` on `finally`
Thanks Casey -- somehow this slipped through the cracks for a year.
We shouldn't be moving these `final_action`s around, that wasn't part of the C++CG design requirements.
Went back to the simple version of `final_action`.