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.