 
       .catch (err) =>
 
+        if err.name is "TimeoutError" and not @_reconnectedOnce
+          warn "First time timeout, reconnecting to kloud..."
+          kontrol.kites.kloud.singleton.reconnect()
+          @_reconnectedOnce = yes
+
         warn "[kloud:info] failed, sending current state back:", { currentState, err }
         @resolveRequestingInfos machineId, State: currentState

    super options
    @requestingInfo = KD.utils.dict()
    @needsRequest   = KD.utils.dict()

  # first info request sends message to kite requesting info
  # subsequent info requests while the first request is pending


  askInfoFromKloud: (machineId, currentState) ->

    {kontrol} = KD.singletons

    KD.remote.api.DataDog.increment "KloudInfo", noop

    @tell 'info', { machineId }
