fix a file descriptor leak

Disconnecting from a Worker leaks a file descriptor, because the worker never calls `close` on its socket.