Index: uspace/lib/c/generic/async.c
===================================================================
--- uspace/lib/c/generic/async.c	(revision 3d79f5b3b233b49d04653ee8be3f55b5b4b7b29e)
+++ uspace/lib/c/generic/async.c	(revision 4c50c8dd1555356fb68e1ee843c1fc8c60d5c2ec)
@@ -1847,8 +1847,4 @@
 	fibril_mutex_lock(&async_sess_mutex);
 	
-	int rc = async_hangup_internal(sess->phone);
-	if (rc == EOK)
-		free(sess);
-	
 	while (!list_empty(&sess->exch_list)) {
 		exch = (async_exch_t *)
@@ -1861,4 +1857,7 @@
 		free(exch);
 	}
+
+	int rc = async_hangup_internal(sess->phone);
+	free(sess);
 	
 	fibril_mutex_unlock(&async_sess_mutex);
