code: func EncodeTimeout(t time.Duration) string {
  	if d := div(t, time.Nanosecond); d <= maxTimeoutValue {
  		return strconv.FormatInt(d, 10) + "n"
  	}
  	if d := div(t, time.Microsecond); d <= maxTimeoutValue {
  		return strconv.FormatInt(d, 10) + "u"
  	}
  	if d := div(t, time.Millisecond); d <= maxTimeoutValue {
  		return strconv.FormatInt(d, 10) + "m"
  	}
  	if d := div(t, time.Second); d <= maxTimeoutValue {
  		return strconv.FormatInt(d, 10) + "S"
  	}
  	if d := div(t, time.Minute); d <= maxTimeoutValue {
  		return strconv.FormatInt(d, 10) + "M"
  	}
  	// Note that maxTimeoutValue * time.Hour > MaxInt64.
  	return strconv.FormatInt(div(t, time.Hour), 10) + "H"
  }
docs: // EncodeTimeout encodes a gRPC/pRPC timeout into a timeout header
  // time.Duration.
  //
  // This rounds the time.Duration to the smallest time unit that can represent
  // it.