Indeed, the semaphore should not be reset in `reset()` as all sockets should be returned, whether or not the pool has been reset. Additionally, if we *did* reset the semaphore, we'd need to be very careful about not releasing the semaphore when a socket from pre-reset was returned. Keeping the semaphore always the same seemed like the best option so as not to leak sockets. :-)