You have some point that easy things should be easy. But, different users have a different understanding of what is easy and how they expect programs to behave. IO::Socket::SSL is not specifically designed to make it harder. Regarding EINTR it just behaves like all the other IO::Socket modules and it would in my opinion against the expectations if it would behave differently. Just try the following code and you'll see that IO::Socket::INET behaves the same regarding EINTR, i.e. breaks the connect if SIGCHLD is triggered before the connect is done:
$SIG{CHLD} = sub { warn "child returned" };
if (!fork()) {
sleep(1);
exit(0);
}
# parent: fails with EINTR if child returns before connect succeeds
my $cl = IO::Socket::INET->new('some_host:dropped_port') or die $!;