diff --git a/include/types/checks.h b/include/types/checks.h
index 359b921..d148e3b 100644
--- a/include/types/checks.h
+++ b/include/types/checks.h
@@ -184,6 +184,7 @@
 	char **envp;				/* the environment to use if running a process-based check */
 	struct pid_list *curpid;		/* entry in pid_list used for current process-based test, or -1 if not in test */
 	struct sockaddr_storage addr;   	/* the address to check */
+	struct wait_list wait_list;            /* Waiting for I/O events */
 	char *sni;				/* Server name */
 };
 
diff --git a/src/checks.c b/src/checks.c
index 2e21459..9637430 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -709,12 +709,12 @@
 /* This function checks if any I/O is wanted, and if so, attempts to do so */
 static struct task *event_srv_chk_io(struct task *t, void *ctx, unsigned short state)
 {
-	struct conn_stream *cs = ctx;
-	struct check *check = cs->data;
+	struct check *check = ctx;
+	struct conn_stream *cs = check->cs;
 
-	if (!(cs->wait_list.wait_reason & SUB_CAN_SEND))
+	if (!(check->wait_list.wait_reason & SUB_CAN_SEND))
 		wake_srv_chk(cs);
-	if (!(cs->wait_list.wait_reason & SUB_CAN_RECV)) {
+	if (!(check->wait_list.wait_reason & SUB_CAN_RECV)) {
 		HA_SPIN_LOCK(SERVER_LOCK, &check->server->lock);
 		__event_srv_chk_r(cs);
 		HA_SPIN_UNLOCK(SERVER_LOCK, &check->server->lock);
@@ -739,7 +739,7 @@
 		goto out_wakeup;
 
 	if (conn->flags & CO_FL_HANDSHAKE) {
-		cs->conn->mux->subscribe(cs, SUB_CAN_SEND, &cs->wait_list);
+		cs->conn->mux->subscribe(cs, SUB_CAN_SEND, &check->wait_list);
 		goto out;
 	}
 
@@ -775,7 +775,7 @@
 			goto out_wakeup;
 		}
 		if (b_data(&check->bo)) {
-			conn->mux->subscribe(cs, SUB_CAN_SEND, &cs->wait_list);
+			conn->mux->subscribe(cs, SUB_CAN_SEND, &check->wait_list);
 			goto out;
 		}
 	}
@@ -828,7 +828,7 @@
 		goto out_wakeup;
 
 	if (conn->flags & CO_FL_HANDSHAKE) {
-		cs->conn->mux->subscribe(cs, SUB_CAN_RECV, &cs->wait_list);
+		cs->conn->mux->subscribe(cs, SUB_CAN_RECV, &check->wait_list);
 		goto out;
 	}
 
@@ -1386,7 +1386,7 @@
 
  wait_more_data:
 	__cs_want_recv(cs);
-	cs->conn->mux->subscribe(cs, SUB_CAN_RECV, &cs->wait_list);
+	cs->conn->mux->subscribe(cs, SUB_CAN_RECV, &check->wait_list);
         goto out;
 }
 
@@ -1409,7 +1409,7 @@
 		ret = tcpcheck_main(check);
 		cs = check->cs;
 		conn = cs_conn(cs);
-	} else if (LIST_ISEMPTY(&cs->wait_list.list))
+	} else if (!(check->wait_list.wait_reason & SUB_CAN_SEND))
 		__event_srv_chk_w(cs);
 
 	if (unlikely(conn->flags & CO_FL_ERROR || cs->flags & CS_FL_ERROR)) {
@@ -1581,9 +1581,9 @@
 	cs = check->cs = cs_new(NULL);
 	if (!check->cs)
 		return SF_ERR_RESOURCE;
-	cs->wait_list.task->process = event_srv_chk_io;
-	cs->wait_list.task->context = cs;
 	conn = cs->conn;
+	/* Maybe there were an older connection we were waiting on */
+	check->wait_list.wait_reason = 0;
 
 	if (is_addr(&check->addr)) {
 		/* we'll connect to the check addr specified on the server */
@@ -2712,7 +2712,7 @@
 				break;
 			}
 			if (b_data(&check->bo)) {
-				cs->conn->mux->subscribe(cs, SUB_CAN_SEND, &cs->wait_list);
+				cs->conn->mux->subscribe(cs, SUB_CAN_SEND, &check->wait_list);
 				goto out;
 			}
 		}
@@ -2767,14 +2767,14 @@
 				check->current_step = NULL;
 				goto out;
 			}
-			cs->wait_list.task->process = event_srv_chk_io;
-			cs->wait_list.task->context = cs;
 
 			if (check->cs)
 				cs_destroy(check->cs);
 
 			check->cs = cs;
 			conn = cs->conn;
+			/* Maybe there were an older connection we were waiting on */
+			check->wait_list.wait_reason = 0;
 			conn->target = &s->obj_type;
 
 			/* no client address */
@@ -2939,7 +2939,7 @@
 					}
 				}
 				else {
-					conn->mux->subscribe(cs, SUB_CAN_RECV, &cs->wait_list);
+					conn->mux->subscribe(cs, SUB_CAN_RECV, &check->wait_list);
 					break;
 				}
 			}
@@ -3139,6 +3139,13 @@
 	if (!check->bi.area || !check->bo.area)
 		return "out of memory while allocating check buffer";
 
+	check->wait_list.task = tasklet_new();
+	if (!check->wait_list.task)
+		return "out of memroy while allocating check tasklet";
+	LIST_INIT(&check->wait_list.list);
+	check->wait_list.wait_reason = 0;
+	check->wait_list.task->process = event_srv_chk_io;
+	check->wait_list.task->context = check;
 	return NULL;
 }
 
