code: func WithTimeout(h http.Handler, timeoutFunc timeoutFunc) http.Handler {
  	return &timeoutHandler{h, timeoutFunc}
  }
docs: // WithTimeout returns an http.Handler that runs h with a timeout
  // determined by timeoutFunc. The new http.Handler calls h.ServeHTTP to handle
  // each request, but if a call runs for longer than its time limit, the
  // handler responds with a 504 Gateway Timeout error and the message
  // provided. (If msg is empty, a suitable default message will be sent.) After
  // the handler times out, writes by h to its http.ResponseWriter will return
  // http.ErrHandlerTimeout. If timeoutFunc returns a nil timeout channel, no
  // timeout will be enforced. recordFn is a function that will be invoked whenever
  // a timeout happens.