This is duplicated-ish from the Golang package itself so that we can get the custom timeout and actually return errors when they come up.  Hopefully can contribute upstream and get this back to using `DialerFromEnvironment` from the `proxy` package directly. 