This continues from were #8187 leaves off. Let's look again at the zephyr output:
[slip] [INF] slip_send: sent: pkt 0x20001ec4 llr: 14, len: 54
[slip] [INF] slip_send: sent: pkt 0x20001ec4 llr: 14, len: 1506
[slip] [INF] slip_send: sent: pkt 0x20001e78 llr: 14, len: 783
[slip] [INF] slip_send: sent: pkt 0x20001e2c llr: 14, len: 54
Connection from 192.0.2.2 closed
[slip] [INF] slip_send: sent: pkt 0x20001e78 llr: 14, len: 783
What we can see here is that Zephyr IP stack sends 2 data packets, 1506, 783 bytes, and then sends FIN as a result of socket close(). As explained in #8187, what really happens in this case is that 783bts packet doesn't get thru and is retransmitted. Looking at Wireshark screenshot there, the peer acks it, but that's where it all ends: FIN doesn't get retransmitted, so, everything gets stuck, until peer closes it by timeout.