func Retryable(err error) error {
	return retryableError{error: err}
}
Retryable defines an error as retryable.
package kitty
import (
	"net/http"
	"errors"
)
type Retryabler interface {
	Retryable() bool
	Cause() error
}
func IsRetryable(err error) bool {
	type causer interface {
		Cause() error
	}
	for err != nil {
		if retry, ok := err.(Retryabler); ok {
			return retry.Retryable()
		}
		cause, ok := err.(causer)
		if !ok {
			break
		}
		err = cause.Cause()
	}
	return false
}
type retryableError struct {
	error
}
func (e retryableError) Cause() error {
	return e.error
}
func (retryableError) Retryable() bool {
	return true
}
var _ error = retryableError{}
var _ Retryabler = retryableError{}