code: func withStackTracer(h http.Handler, l log.Logger) http.Handler {
  	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  		defer func() {
  			if err := recover(); err != nil {
  				const size = 64 << 10
  				buf := make([]byte, size)
  				buf = buf[:runtime.Stack(buf, false)]
  				level.Error(l).Log("msg", "panic while serving request", "client", r.RemoteAddr, "url", r.URL, "err", err, "stack", buf)
  				panic(err)
  			}
  		}()
  		h.ServeHTTP(w, r)
  	})
  }
docs: // withStackTrace logs the stack trace in case the request panics. The function
  // will re-raise the error which will then be handled by the net/http package.
  // It is needed because the go-kit log package doesn't manage properly the
  // panics from net/http (see https://github.com/go-kit/kit/issues/233).