lib/socket: refactor IOError from errnos into contructors