func IsFailedPrecondition(err error) bool {
	return errors.Cause(err) == ErrFailedPrecondition
}
IsFailedPrecondition returns true if an operation could not proceed to the
lack of a particular condition
package errdefs
import (
	"context"
	"github.com/pkg/errors"
)
var (
	ErrUnknown            = errors.New("unknown")  
	ErrInvalidArgument    = errors.New("invalid argument")
	ErrNotFound           = errors.New("not found")
	ErrAlreadyExists      = errors.New("already exists")
	ErrFailedPrecondition = errors.New("failed precondition")
	ErrUnavailable        = errors.New("unavailable")
	ErrNotImplemented     = errors.New("not implemented")  
)
func IsInvalidArgument(err error) bool {
	return errors.Cause(err) == ErrInvalidArgument
}
func IsNotFound(err error) bool {
	return errors.Cause(err) == ErrNotFound
}
func IsAlreadyExists(err error) bool {
	return errors.Cause(err) == ErrAlreadyExists
}