code: func Retry(roundTripper soap.RoundTripper, fn RetryFunc) soap.RoundTripper {
  	r := &retry{
  		roundTripper: roundTripper,
  		fn:           fn,
  	}
  
  	return r
  }
docs: // Retry wraps the specified soap.RoundTripper and invokes the
  // specified RetryFunc. The RetryFunc returns whether or not to
  // retry the call, and if so, how long to wait before retrying. If
  // the result of this function is to not retry, the original error
  // is returned from the RoundTrip function.