We can't. There's a race condition between p.conns <- conn and here and close(conns) in Close. The sequence of events:
- Put gets called.
- Fetches conns using getConns
- Close gets called
- It calls close(conns)
- Put progresses and attempts p.conns <- conn
This will result in a panic because the channel is already closed.