Prevent starvation due to timeout requests

When requests timeout while they are still in the agent's request pool, they depend on a variety of events to occur to cleanup the pool. When this does not happen the sockets are left in a opened but unused state, counting against the connection pool limit. When enough of these cases the limit will be exhausted and no further requests can be processed.
Merge pull request #16 from spumko/agent-defer

Prevent starvation due to timeout requests