# simple recover
running panic...
recovering...
recovered: panic

# recover with result
running panic...
recovered: panic
result: 3

# nested defer frame
deferred nested function
recovered: panic

# nested panic: panic inside recover
recovered 1: panic
recovered 2: foo

# panic inside defer
recovered: panic

# panic replace
panic 1
panic 2
recovered: panic 2

# defer panic
defer panic
recovered from deferred call: deferred panic

# runtime.Goexit
Goexit deferred function, recover is nil: true
