in cfn-resources/network-peering/cmd/main.go [49:85]
func wrap(req handler.Request, f handlerFunc) (response handler.ProgressEvent) {
defer func() {
// Catch any panics and return a failed ProgressEvent
if r := recover(); r != nil {
err, ok := r.(error)
if !ok {
err = errors.New(fmt.Sprint(r))
}
log.Printf("Trapped error in handler: %v", err)
response = handler.NewFailedEvent(err)
}
}()
// Populate the previous model
prevModel := &resource.Model{}
if err := req.UnmarshalPrevious(prevModel); err != nil {
log.Printf("Error unmarshaling prev model: %v", err)
return handler.NewFailedEvent(err)
}
// Populate the current model
currentModel := &resource.Model{}
if err := req.Unmarshal(currentModel); err != nil {
log.Printf("Error unmarshaling model: %v", err)
return handler.NewFailedEvent(err)
}
response, err := f(req, prevModel, currentModel)
if err != nil {
log.Printf("Error returned from handler function: %v", err)
return handler.NewFailedEvent(err)
}
return response
}