eventloop() should not swallow socket.errors