         cycleChannel.call this
         console.error err
 
+      pong =-> @lastPong = Date.now()
+
       cycleChannel =->
         @off()
         @stopPinging()

        channelName = getChannelName "kite-#{kiteName}"
        return callback channels[channelName]  if channels[channelName]
        channel = KD.remote.mq.subscribe channelName
        channels[channelName] = channel
        channel.once 'broker.subscribed', ->
          onReady channel, -> callback channel

          clientId    : KD.remote.getSessionToken()
        channel.on "message", messageHandler.bind channel, kiteName
        i = setInterval ->
          now = Date.now()
          isUnresponsive = channel.lastPong? and (now - channel.lastPong > 6000)
          cycleChannel.call channel  if isUnresponsive
          channel.publish JSON.stringify
            method      : 'ping'
            arguments   : []
