Index: abi/include/abi/ipc/ipc.h
===================================================================
--- abi/include/abi/ipc/ipc.h	(revision f04b5b3bf75e5d5987007f7a9d2cdd7d90bd5978)
+++ abi/include/abi/ipc/ipc.h	(revision a1026daf544b91d3c8e6d81817113aece3c7440e)
@@ -60,4 +60,7 @@
 #define IPC_CALL_NOTIF           (1 << 3)
 
+/** The call was automatically answered by the kernel due to error */
+#define IPC_CALL_AUTO_REPLY      (1 << 4)
+
 /**
  * Maximum buffer size allowed for IPC_M_DATA_WRITE and
Index: kernel/generic/src/ipc/sysipc.c
===================================================================
--- kernel/generic/src/ipc/sysipc.c	(revision f04b5b3bf75e5d5987007f7a9d2cdd7d90bd5978)
+++ kernel/generic/src/ipc/sysipc.c	(revision a1026daf544b91d3c8e6d81817113aece3c7440e)
@@ -761,5 +761,5 @@
 
 	if (!call) {
-		ipc_data_t data = {0};
+		ipc_data_t data = {};
 		data.cap_handle = CAP_NIL;
 		STRUCT_TO_USPACE(calldata, &data);
@@ -767,9 +767,9 @@
 	}
 	
+	call->data.flags = call->flags;
 	if (call->flags & IPC_CALL_NOTIF) {
 		/* Set in_phone_hash to the interrupt counter */
 		call->data.phone = (void *) call->priv;
 		
-		call->data.flags = IPC_CALL_NOTIF;
 		call->data.cap_handle = CAP_NIL;
 
@@ -788,5 +788,4 @@
 		}
 
-		call->data.flags = IPC_CALL_ANSWERED;
 		call->data.cap_handle = CAP_NIL;
 		
@@ -826,5 +825,6 @@
 	/*
 	 * The callee will not receive this call and no one else has a chance to
-	 * answer it. Reply with the EPARTY error code.
+	 * answer it. Set the IPC_CALL_AUTO_REPLY flag and return the EPARTY
+	 * error code.
 	 */
 	ipc_data_t saved_data;
@@ -839,4 +839,5 @@
 	IPC_SET_RETVAL(call->data, EPARTY);
 	(void) answer_preprocess(call, saved ? &saved_data : NULL);
+	call->flags |= IPC_CALL_AUTO_REPLY;
 	ipc_answer(&TASK->answerbox, call);
 
Index: uspace/lib/c/generic/async.c
===================================================================
--- uspace/lib/c/generic/async.c	(revision f04b5b3bf75e5d5987007f7a9d2cdd7d90bd5978)
+++ uspace/lib/c/generic/async.c	(revision a1026daf544b91d3c8e6d81817113aece3c7440e)
@@ -1496,6 +1496,7 @@
 
 		if (call.cap_handle == CAP_NIL) {
-			if (call.flags == 0) {
-				/* This neither a notification nor an answer. */
+			if ((call.flags &
+			    (IPC_CALL_NOTIF | IPC_CALL_ANSWERED)) == 0) {
+				/* Neither a notification nor an answer. */
 				handle_expired_timeouts();
 				continue;
