Well, reopening a socket implies that I have manually closed the socket, which does require an optional with your implementation.