code: func (h *Recovery) ServeHTTPContext(ctx context.Context, w http.ResponseWriter, r *http.Request) (err error) {
  	ctx = reporter.WithReporter(ctx, h.Reporter)
  
  	// Add the request to the context.
  	ctx = errors.WithRequest(ctx, r)
  
  	// Add the request id
  	ctx = errors.WithInfo(ctx, "request_id", httpx.RequestID(ctx))
  
  	defer func() {
  		if e := errors.Recover(ctx, recover()); e != nil {
  			w.WriteHeader(http.StatusInternalServerError)
  			err = e
  			reporter.Report(ctx, err)
  			return
  		}
  	}()
  
  	err = h.handler.ServeHTTPContext(ctx, w, r)
  
  	return
  }
docs: // ServeHTTPContext implements the httpx.Handler interface. It recovers from
  // panics and returns an error for upstream middleware to handle.