code: func IsTemporary(err error) bool {
  	for err != nil {
  		if tmp, ok := err.(Temporary); ok && tmp.Temporary() {
  			return true
  		}
  
  		cause := errors.Cause(err)
  		if cause == err {
  			break
  		}
  
  		err = cause
  	}
  
  	return false
  }
docs: // IsTemporary returns true if the error or a recursive cause returns true for
  // temporary.