Add: defer(name){} to support updating the returning value.
Add: improvements so that deferred codes will still be executed even if an exception has been raisen.