 						chunk_size: 1
 						timeout: -1
 						call: (_items) =>
-							if @__loadingDeferred.state() == "rejected"
+							# console.error @getUniqueId(), open_counter, @__open_counter, "chunking work"
+							if open_counter < @__open_counter
+								# we are already in a new run, exit
 								return false
 							@__appendNode(_items[0], true) # , false, true))
 
 			.done =>
-				@is_open = true
-				@do_open = false
+				# console.error @getUniqueId(), open_counter, @__open_counter, "chunking work DONE"
+				if open_counter < @__open_counter
+					return
+
 				if not @isRoot()
 					@replaceSelf()
 				do_resolve()
 			.fail =>
+				# console.error @getUniqueId(), open_counter, @__open_counter, "chunking work FAIL"
+				if open_counter < @__open_counter
+					return
+
 				for c in @children
 					c.removeFromDOM()
 				do_reject()

		# we could return loading_deferred here
		assert(not @isLoading(), "ListViewTreeNode.open", "Cannot open node #{@getUniqueId()}, during opening. This can happen if the same node exists multiple times in the same tree.", node: @)

		if @is_open
			return CUI.resolvedPromise()

		dfr = @__loadingDeferred = new CUI.Deferred()


			return
		CUI.error("ListViewTreeNode.abortLoading: Aborting chunk loading.")
		@__loadingDeferred.reject()
		@__loadingDeferred = null
		return

	__open_counter: 0

	# resolves with the opened node
	open: ->
