fix some concurrency issues:

- return-lease race: closes #6
- repeated return-lease hits max conns: #7
- double return: closes #8