 		# 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: @)
 
+		@__open_counter++
+
+		open_counter = @__open_counter
+
+		# console.error @getUniqueId(), "opening...", "is open:", @is_open, open_counter
+
 		if @is_open
 			return CUI.resolvedPromise()
+
+		@is_open = true
+		@do_open = false
 
 		dfr = @__loadingDeferred = new CUI.Deferred()
 

						chunk_size: 1
						timeout: -1
						call: (_items) =>
							if @__loadingDeferred.state() == "rejected"
								return false
							@__appendNode(_items[0], true) # , false, true))

			.done =>
				@is_open = true
				@do_open = false
				if not @isRoot()
					@replaceSelf()
				do_resolve()
			.fail =>
				for c in @children
					c.removeFromDOM()
				do_reject()

			# console.debug @._key, @getUniqueId(), "children loaded", @children.length

			if @children.length == 0
				if not @isRoot()
					@replaceSelf()
				do_resolve()
