thanks for comment.
I see. this positioning was intend. I think other unexpended throw exception. 
If rescue position move to on_read_json and on_read_msgpack method. 
So other exception is not rescue and not close connection.

it's connection leak bugs. 
I think m.call equals on_read_json or on_read_msgpack.

Is this bad code? It's should moved to on_read_json and on_read_msgpack?

thank you.