code: func WithPerRetryTimeout(timeout time.Duration) CallOption {
  	return CallOption{applyFunc: func(o *options) {
  		o.perCallTimeout = timeout
  	}}
  }
docs: // WithPerRetryTimeout sets the RPC timeout per call (including initial call) on this call, or this interceptor.
  //
  // The context.Deadline of the call takes precedence and sets the maximum time the whole invocation
  // will take, but WithPerRetryTimeout can be used to limit the RPC time per each call.
  //
  // For example, with context.Deadline = now + 10s, and WithPerRetryTimeout(3 * time.Seconds), each
  // of the retry calls (including the initial one) will have a deadline of now + 3s.
  //
  // A value of 0 disables the timeout overrides completely and returns to each retry call using the
  // parent `context.Deadline`.