 				# FIXME: This code needs to go away and use the select/deselect mechanism
 				# of ListView
 				#
-
 				if node.isSelected?()
-					node.deselect?(ev)
+					action = "deselect"
 				else
-					node.select?(ev)
+					action = "select"
+
+				ret = node[action]?(ev)
+
+				# console.error "node action", action, ret
+
+				if isPromise(ret)
+					ret.fail =>
+						# if the node did not select, we try the handle
+						ev.stopPropagation()
+						action_on_handle(ev, info, row, node)
+
 				return
 
 		if @_no_hierarchy

		if do_open
			@root.open()

		# this uses the capture phase, don't interfer with the
		# click, if we have nothing to do
		Events.listen

				if ev.hasModifierKey(true)
					return

				target = ev.getTarget()
				row = CUI.DOM.closest(target, ".cui-list-view-grid-row")
				node = DOM.data(row, "listViewRow")

				if not node or node.isLoading?()
					return
