diff --git a/include/proto/connection.h b/include/proto/connection.h
index c7f2561..2a45677 100644
--- a/include/proto/connection.h
+++ b/include/proto/connection.h
@@ -600,12 +600,7 @@
 {
 	cs->obj_type = OBJ_TYPE_CS;
 	cs->flags = CS_FL_NONE;
-	LIST_INIT(&cs->wait_list.list);
-	LIST_INIT(&cs->send_wait_list);
-	LIST_INIT(&cs->recv_wait_list);
-	LIST_INIT(&cs->sendrecv_wait_list);
 	cs->conn = conn;
-	cs->wait_list.wait_reason = 0;
 }
 
 /* Initializes all required fields for a new connection. Note that it does the
@@ -673,8 +668,6 @@
  */
 static inline void cs_free(struct conn_stream *cs)
 {
-	if (cs->wait_list.task)
-		tasklet_free(cs->wait_list.task);
 
 	pool_free(pool_head_connstream, cs);
 }
@@ -694,11 +687,6 @@
 	if (!likely(cs))
 		return NULL;
 
-	cs->wait_list.task = tasklet_new();
-	if (!likely(cs->wait_list.task)) {
-		cs_free(cs);
-		return NULL;
-	}
 	if (!conn) {
 		conn = conn_new();
 		if (!likely(conn)) {
diff --git a/include/types/connection.h b/include/types/connection.h
index 998ecac..59bb27d 100644
--- a/include/types/connection.h
+++ b/include/types/connection.h
@@ -372,10 +372,6 @@
 	/* 3 bytes hole here */
 	unsigned int flags;                  /* CS_FL_* */
 	struct connection *conn;             /* xprt-level connection */
-	struct wait_list wait_list;          /* We're in a wait list for send */
-	struct list send_wait_list;          /* list of tasks to wake when we're ready to send */
-	struct list recv_wait_list;          /* list of tasks to wake when we're ready to recv */
-	struct list sendrecv_wait_list;      /* list of tasks to wake when we're ready to either send or recv */
 	void *data;                          /* pointer to upper layer's entity (eg: stream interface) */
 	const struct data_cb *data_cb;       /* data layer callbacks. Must be set before xprt->init() */
 	void *ctx;                           /* mux-specific context */
diff --git a/src/stream_interface.c b/src/stream_interface.c
index 13f7aa3..eb04043 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -671,7 +671,7 @@
 	 * in the normal buffer.
 	 */
 	if (!co_data(oc))
-		goto wake_others;
+		return did_send;
 
 	/* when we're here, we already know that there is no spliced
 	 * data left, and that there are sendable buffered data.
@@ -723,29 +723,6 @@
 		cs_want_send(cs);
 		conn->mux->subscribe(cs, SUB_CAN_SEND, &si->wait_list);
 	}
-
-wake_others:
-	/* Maybe somebody was waiting for this conn_stream, wake them */
-	if (did_send) {
-		while (!LIST_ISEMPTY(&cs->send_wait_list)) {
-			struct wait_list *sw = LIST_ELEM(cs->send_wait_list.n,
-			    struct wait_list *, list);
-			LIST_DEL(&sw->list);
-			LIST_INIT(&sw->list);
-			sw->wait_reason &= ~SUB_CAN_SEND;
-			tasklet_wakeup(sw->task);
-		}
-		while (!(LIST_ISEMPTY(&cs->sendrecv_wait_list))) {
-			struct wait_list *sw = LIST_ELEM(cs->sendrecv_wait_list.n,
-			    struct wait_list *, list);
-			LIST_DEL(&sw->list);
-			LIST_INIT(&sw->list);
-			LIST_ADDQ(&cs->recv_wait_list, &sw->list);
-			sw->wait_reason &= ~SUB_CAN_SEND;
-			tasklet_wakeup(sw->task);
-		}
-
-	}
 	return did_send;
 }
 
@@ -1357,26 +1334,6 @@
 		}
 		ic->last_read = now_ms;
 	}
-	if (cur_read > 0) {
-		while (!LIST_ISEMPTY(&cs->recv_wait_list)) {
-			struct wait_list *sw = LIST_ELEM(cs->recv_wait_list.n,
-			    struct wait_list *, list);
-			LIST_DEL(&sw->list);
-			LIST_INIT(&sw->list);
-			sw->wait_reason &= ~SUB_CAN_RECV;
-			tasklet_wakeup(sw->task);
-		}
-		while (!(LIST_ISEMPTY(&cs->sendrecv_wait_list))) {
-			struct wait_list *sw = LIST_ELEM(cs->sendrecv_wait_list.n,
-			    struct wait_list *, list);
-			LIST_DEL(&sw->list);
-			LIST_INIT(&sw->list);
-			LIST_ADDQ(&cs->send_wait_list, &sw->list);
-			sw->wait_reason &= ~SUB_CAN_RECV;
-			tasklet_wakeup(sw->task);
-		}
-
-	}
 
  end_recv:
 	if (conn->flags & CO_FL_ERROR || cs->flags & CS_FL_ERROR)
