         else
           callback? err, apps
 
-  fetchAppsFromFs:(callback)->
+  fetchAppsFromFs:(cb)->
+
+    @_fetchQueue.push cb  if cb
+    return if @_fetchQueue.length > 1
 
     path   = "/home/#{KD.whoami().profile.nickname}/Applications"
     appDir = FSHelper.createFileFromPath path, 'folder'
     appDir.fetchContents KD.utils.getTimedOutCallback (err, files)=>
       if err or not Array.isArray files or files.length is 0
         @putAppsToAppStorage {}
-        callback()
+        callback() for callback in @_fetchQueue
+        @_fetchQueue = []
       else
         apps  = []
         stack = []

    mainController  = KD.getSingleton "mainController"
    @manifests      = KodingAppsController.manifests
    @publishedApps  = {}

    @getPublishedApps()
    @createExtensionToAppMap()

              catch e
                console.warn "Manifest file is broken", e
          @putAppsToAppStorage manifests
          callback null, manifests  for callback in @_fetchQueue
          @_fetchQueue = []
    , ->
      warn msg = "Timeout reached for kite request"
      KD.logToExternal msg
      callback() for callback in @_fetchQueue
      @_fetchQueue = []

  fetchAppsFromDb:(callback)->
    return unless @appStorage
