func (e *ErrProtocolType) Recoverable() bool {
	return true
}
Recoverable whether error is recoverable or not
package protocol
import "fmt"
const (
	PrefixWrongType = "WRONGTYP"
	PrefixErr = "ERR"
)
type RecoverableError interface {
	Recoverable() bool
}
type ErrCastFailedToInt struct {
	Val interface{}
}
func (e *ErrCastFailedToInt) Error() string {
	return fmt.Sprintf("%s: error casting %v to int", PrefixErr, e.Val)
}
func (ErrCastFailedToInt) Recoverable() bool {
	return true
}
type ErrWrongType struct {
}
func (ErrWrongType) Error() string {
	return fmt.Sprintf("%s: invalid operation against key holding invalid type of value", PrefixWrongType)
}
func (ErrWrongType) Recoverable() bool {
	return true
}
type ErrGeneric struct {
	Err error
}
func (e *ErrGeneric) Error() string {
	return fmt.Sprintf("%s: %s", PrefixErr, e.Err)
}
func (ErrGeneric) Recoverable() bool {
	return true
}
type ErrWrongNumberOfArgs struct {
	Cmd string
}
func (e *ErrWrongNumberOfArgs) Error() string {
	return fmt.Sprintf("%s: %s has wrong number of arguments", PrefixWrongType, e.Cmd)
}
func (ErrWrongNumberOfArgs) Recoverable() bool {
	return true
}
type ErrUnknownCommand struct {
	Cmd string
}
func (e *ErrUnknownCommand) Error() string {
	return fmt.Sprintf("%s: unknown command %s", PrefixErr, e.Cmd)
}
func (ErrUnknownCommand) Recoverable() bool {
	return true
}
type ErrProtocolType struct {
	Type byte
}