the keepalive and persistent parameters were actually named differently in the code - they now work as documented.
fix a bug where callbacks would sometimes never be called when the request timeout is near or below the persistent conenction timeout (testcase by Cindy Wang).
destroying the guard would have no effect when a request was recursing or being retired.