       @status = if speedCheck and @getResponseTime() > slownessIndicator then "slow" else "success"
       clearTimeout @pingTimeout
       @pingTimeout = null
-      @emit "healthCheckCompleted"
+      @emit @completeEvent
+
+  startCheck: ->
+    @status = "waiting"
+    @startTime = Date.now()
+    @setPingTimeout @completeEvent
 
   reset: ->
     @status = "waiting"

    warn err  if err
    @status = "fail"
    @emit "healthCheckCompleted"


  run: ->
    @emit "healthCheckStarted"

    {troubleshoot} = @getOptions()
    return @forceComplete "undefined callback"  unless troubleshoot
    @completeEvent = "healthCheckCompleted"
    @startCheck()
    troubleshoot @finish.bind(this)

  setPingTimeout: ->
    @pingTimeout = setTimeout =>
      @status = "fail"
      @emit @completeEvent
    , @getOptions().timeout

  finish: (data)->
