I have tried many things, here and I am starting to suspect a bug in the beta.
After getting EINTR once, I retry only to get EADDRINUSE over and over; before I give up. I have also tried setting the socket option SO_REUSEADDR and this does not help.
I have also tried with and without O_NONBLOCK, no luck.
While on mobile data, its always:
connect()->EINTR->EADDRINUSE
Switching to wifi (without restarting the app) and things start to work.
This is happening from the "Packet Tunnel" network extension part of the app... something subtle has changed somwhere - Hopefully the beta developers are aware or have some insight.