diff --git a/web/ons-demo/js/app.js b/web/ons-demo/js/app.js
index 02dbc5d..144a1d2 100644
--- a/web/ons-demo/js/app.js
+++ b/web/ons-demo/js/app.js
@@ -231,13 +231,11 @@
 		var newSelectedFlows = [];
 		selectedFlows.forEach(function (flow) {
 			if (flow) {
-				if (flow.pending) {
+				var liveFlow = flowMap[makeFlowKey(flow)];
+				if (liveFlow) {
+					newSelectedFlows.push(liveFlow);
+				} else if (flow.pending) {
 					newSelectedFlows.push(flow);
-				} else {
-					var liveFlow = flowMap[makeFlowKey(flow)];
-					if (liveFlow) {
-						newSelectedFlows.push(liveFlow);
-					}
 				}
 			} else {
 				newSelectedFlows.push(null);
@@ -269,11 +267,13 @@
 	}
 }
 
-function deselectFlow(flow) {
+function deselectFlow(flow, ifPending) {
 	var flowKey = makeFlowKey(flow);
 	var newSelectedFlows = [];
 	selectedFlows.forEach(function (flow) {
-		if (!flow || flowKey !== makeFlowKey(flow)) {
+		if (!flow ||
+				flowKey !== makeFlowKey(flow) ||
+				flowKey === makeFlowKey(flow) && ifPending && !flow.pending ) {
 			newSelectedFlows.push(flow);
 		}
 	});
@@ -285,6 +285,10 @@
 	updateSelectedFlows();
 }
 
+function deselectFlowIfPending(flow) {
+	deselectFlow(flow, true);
+}
+
 function showFlowChooser() {
 	function rowEnter(d) {
 		var row = d3.select(this);
@@ -802,7 +806,7 @@
 					selectFlow(flow);
 
 					setTimeout(function () {
-						deselectFlow(flow);
+						deselectFlowIfPending(flow);
 					}, pendingTimeout);
 				}
 			} else {
