     @tell 'info', { machineId }
 
       .then (info) =>
-        @requestingInfo[machineId].forEach ({ resolve }) -> resolve info
-        @requestingInfo[machineId] = null
+
+        @resolveRequestingInfos machineId, info
 
       .timeout ComputeController.timeout
 
       .catch (err) =>
 
         warn "[kloud:info] failed, sending current state back:", { currentState, err }
-
-        @requestingInfo[machineId].forEach ({ resolve }) ->
-          resolve State: currentState
-        @requestingInfo[machineId] = null
-
-      .finally => @needsRequest[machineId] = yes
+        @resolveRequestingInfos machineId, State: currentState


        if klientInfo?

          @requestingInfo[machineId].forEach ({ resolve }) ->
            resolve klientInfo

          @requestingInfo[machineId] = null
          @needsRequest[machineId]   = yes

        else


    new Promise (resolve, reject) =>
      @requestingInfo[machineId] ?= []
      @requestingInfo[machineId].push { resolve, reject }


  resolveRequestingInfos: (machineId, info)->

    @requestingInfo?[machineId].forEach ({ resolve }) ->
      resolve info

    @requestingInfo[machineId] = null
    @needsRequest[machineId]   = yes


  askInfoFromKlient: (machineId, callback) ->
