SE-0415: Function Body Macros

Perhaps returnValue could be available in defer scopes in non throwing functions and result or something similar could be available in defer scopes in throwing functions, where the type of result is Result<ReturnType, ErrorType>.