diff --git a/lib/heartbeat.js b/lib/heartbeat.js
index 027fc966149e979858af97fb5c5d420fe2ef894f..209bc9ed32869a035602d7c892fe7aec0b68ce93 100644
--- a/lib/heartbeat.js
+++ b/lib/heartbeat.js
@@ -92,11 +92,16 @@ var check = exports.check = function(url, cb) {
 
   var shortname = url.host + ':' + url.port;
 
+  var timeoutHandle = setTimeout(function() {
+    req.abort();
+  }, checkTimeout);
+
   var req = require(url.scheme).get({
     host: url.host,
     port: url.port,
     path: exports.path
   }, function (res) {
+    clearTimeout(timeoutHandle);
     if (res.statusCode === 200) cb(true);
     else {
       logger.error("non-200 response from " + shortname + ".  fatal! (" + res.statusCode + ")");
@@ -104,14 +109,8 @@ var check = exports.check = function(url, cb) {
     }
   });
   req.on('error', function (e) {
+    clearTimeout(timeoutHandle);
     logger.error("can't communicate with " + shortname + ".  fatal: " + e);
     cb(false, e);
   });
-  req.on('connect', function (socket) {
-    socket.setTimeout(checkTimeout);
-    socket.on('timeout', function() {
-        req.abort();
-        cb(false, "timeout");
-    });
-  });
 };