t :: {Protocol.UndefinedError, term, term, term, term}
options :: [__exception__: term, protocol: term, value: term, description: term] | [{String.t, term}]