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.