can be used in main block (which can be plain or async) and store body for defered execution after evaluation of main block
called after execution of main block, where all 'defered' blocks will be executed in one thread in LIFO order.
called inside defer blocks, where argument(t)
Construction Defers: defer/recover is alternative mechanism to exception handling, simular to one in Go language.
We use one hidden in go and goScope construct are transformed to withDefers usage with help of macroses.
It is also possible to use one unsugared (as in next example), but this is a bit verbose.