I ran this sample and noticed that if ,as mentioned, the pooled connections are closed then this code recovers from it. But what I noticed is that after recovering the no. of connections in the pool is just one (I am checking open connections by the method mentioned)- so somehow pooling is not taking place. I didn't modify the code.
Also, another thing I noticed is that for SQL Server (I have 2005 version) the pool size is not 100 but 2 by default.