Put back and fix the SSL async patch.

Revert "Revert "Merge pull request #829 from symform/httpwebreq-async-ssl""

This reverts commit 56d9a057eb612124a6fa1566990d1002f699c744, which was a
revert of 35899c07fff7f7e4c6533364091bbac6ce86fdfd, thus putting 35889 back.