code: func Recoverer(next http.Handler) http.Handler {
  	fn := func(w http.ResponseWriter, r *http.Request) {
  		defer func() {
  			if rvr := recover(); rvr != nil {
  
  				logEntry := GetLogEntry(r)
  				if logEntry != nil {
  					logEntry.Panic(rvr, debug.Stack())
  				} else {
  					fmt.Fprintf(os.Stderr, "Panic: %+v\n", rvr)
  					debug.PrintStack()
  				}
  
  				http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
  			}
  		}()
  
  		next.ServeHTTP(w, r)
  	}
  
  	return http.HandlerFunc(fn)
  }
docs: // Recoverer is a middleware that recovers from panics, logs the panic (and a
  // backtrace), and returns a HTTP 500 (Internal Server Error) status if
  // possible. Recoverer prints a request ID if one is provided.
  //
  // Alternatively, look at https://github.com/pressly/lg middleware pkgs.