-record(codec, { decode :: fun((wist:frame()) -> {ok, any()} | {error, wist:decode_error()}), encode :: fun((any()) -> {ok, wist:frame()} | {error, wist:encode_error()}) }).