Connection: now "finish" callbacks are called only once, like "next_message" callbacks. I think this is more intuitive behavior.
Connection: now it automatically shuts down the socket on "finish" event (on_eof or on_error). This is because sometimes the socket remains half-open (writable) when the peer closes it, leading to potential dead lock on the peer side. By explicitly shuts down the socket, the Connection always sends back EOF signal to the peer when it receives EOF.