package middleware import ( "fmt" "net/http" ) // Recovery returns a middleware that recovers from panics in the inner // RoundTripper chain. A recovered panic is converted to an error wrapping // the panic value. func Recovery() Middleware { return func(next http.RoundTripper) http.RoundTripper { return RoundTripperFunc(func(req *http.Request) (resp *http.Response, err error) { defer func() { if r := recover(); r != nil { err = fmt.Errorf("panic recovered in round trip: %v", r) } }() return next.RoundTrip(req) }) } }