in funcframework/framework.go [294:316]
func wrapCloudEventFunction(ctx context.Context, fn func(context.Context, cloudevents.Event) error) (http.Handler, error) {
p, err := cloudevents.NewHTTP()
if err != nil {
return nil, fmt.Errorf("failed to create protocol: %v", err)
}
// Always log errors returned by the function to stderr
logErrFn := func(ctx context.Context, ce cloudevents.Event) error {
defer recoverPanic(nil, "user function execution", true)
err := fn(ctx, ce)
if err != nil {
fmt.Fprintf(os.Stderr, fmtFunctionError(err))
}
return err
}
h, err := cloudevents.NewHTTPReceiveHandler(ctx, p, logErrFn)
if err != nil {
return nil, fmt.Errorf("failed to create handler: %v", err)
}
return convertBackgroundToCloudEvent(h), nil
}