public void Unreferenced_busy_sockets_are_collected_at_cleanup() {
var sockets = new List<MockSocket>();
Func<ISocket> socketFactory = () => {
var socket = new MockSocket();
sockets.Add(socket);
return socket;
};
var pool = new ConnectionPool(socketFactory) { CleanupInterval = TimeSpan.FromSeconds(1) };
pool.GetSocket();
Assert.AreEqual(0, sockets[0].DisposeCalled);
GC.Collect();
Wait(() => sockets[0].DisposeCalled > 0, TimeSpan.FromSeconds(5), "socket didn't get cleaned up");
}