// We have to use pointer is because in golang: "recover return nil if was not called directly by a deferred function."
// And we have to set the returned error otherwise our handler will return nil as error which is incorrect
if panicObj := recover(); panicObj != nil {
err, ok := panicObj.(error)
if !ok {