You need to let him read for a long time to notice.
Here I left it for a day in a loop opening and closing the socket.
The problem is the return before finishing the Sockread Event. It will prevent the Event from finishing and &BinVar's memory will not be released.
Put a Return at some point and you will see that the memory will not be freed.
I showed this case, because that's how the example explains the return in case of $sockbr, but any return will cause the failure of not freeing the memory.