defer
delays execution until function return
<defer> = defer <command>
defer's arguments are evaluated immediately, but the
function call is not executed until the surrounding function
returns.
| cleanup after processing is done | |
| deferred functions calls are executed in last-in-first-out order | |