Index: uspace/lib/libc/generic/async.c
===================================================================
--- uspace/lib/libc/generic/async.c	(revision 1c1002a59405920f79394ae77cb3e4581d5aa403)
+++ uspace/lib/libc/generic/async.c	(revision 2f08ff553b4b50a1b4ed9ffcbbc17baa71d59800)
@@ -484,5 +484,5 @@
 	connection_t *conn;
 	unsigned long key;
-
+	
 	conn = malloc(sizeof(*conn));
 	if (!conn) {
@@ -499,5 +499,5 @@
 	conn->wdata.active = 1;	/* We will activate the fibril ASAP */
 	conn->cfibril = cfibril;
-
+	
 	conn->wdata.fid = fibril_create(connection_fibril, conn);
 	if (!conn->wdata.fid) {
@@ -507,4 +507,5 @@
 		return NULL;
 	}
+	
 	/* Add connection to the connection hash table */
 	key = conn->in_phone_hash;
@@ -512,7 +513,7 @@
 	hash_table_insert(&conn_hash_table, &key, &conn->link);
 	futex_up(&async_futex);
-
+	
 	fibril_add_ready(conn->wdata.fid);
-
+	
 	return conn->wdata.fid;
 }
@@ -525,4 +526,5 @@
  * @param callid	Hash of the incoming call.
  * @param call		Data of the incoming call.
+ *
  */
 static void handle_call(ipc_callid_t callid, ipc_call_t *call)
@@ -534,6 +536,6 @@
 		_in_interrupt_handler = 0;
 		return;
-	}		
-
+	}
+	
 	switch (IPC_GET_METHOD(*call)) {
 	case IPC_M_CONNECT_ME_TO:
@@ -543,9 +545,9 @@
 		return;
 	}
-
+	
 	/* Try to route the call through the connection hash table */
 	if (route_call(callid, call))
 		return;
-
+	
 	/* Unknown call from unknown phone - hang it up */
 	ipc_answer_0(callid, EHANGUP);
@@ -740,21 +742,15 @@
 {
 	amsg_t *msg;
-
-	if (_in_interrupt_handler) {
-		printf("Cannot send asynchronous request in interrupt "
-		    "handler.\n");
-		_exit(1);
-	}
-
+	
 	msg = malloc(sizeof(*msg));
 	msg->done = 0;
 	msg->dataptr = dataptr;
-
+	
 	/* We may sleep in the next method, but it will use its own mechanism */
 	msg->wdata.active = 1; 
 				
 	ipc_call_async_4(phoneid, method, arg1, arg2, arg3, arg4, msg,
-	    reply_received, 1);
-
+	    reply_received, !_in_interrupt_handler);
+	
 	return (aid_t) msg;
 }
@@ -782,21 +778,15 @@
 {
 	amsg_t *msg;
-
-	if (_in_interrupt_handler) {
-		printf("Cannot send asynchronous request in interrupt "
-		    "handler.\n");
-		_exit(1);
-	}
-
+	
 	msg = malloc(sizeof(*msg));
 	msg->done = 0;
 	msg->dataptr = dataptr;
-
+	
 	/* We may sleep in next method, but it will use its own mechanism */
 	msg->wdata.active = 1; 
-
+	
 	ipc_call_async_5(phoneid, method, arg1, arg2, arg3, arg4, arg5, msg,
-	    reply_received, 1);
-
+	    reply_received, !_in_interrupt_handler);
+	
 	return (aid_t) msg;
 }
@@ -885,19 +875,14 @@
 	amsg_t *msg;
 	
-	if (_in_interrupt_handler) {
-		printf("Cannot call async_usleep in interrupt handler.\n");
-		_exit(1);
-	}
-
 	msg = malloc(sizeof(*msg));
 	if (!msg)
 		return;
-
+	
 	msg->wdata.fid = fibril_get_id();
 	msg->wdata.active = 0;
-
+	
 	gettimeofday(&msg->wdata.expires, NULL);
 	tv_add(&msg->wdata.expires, timeout);
-
+	
 	futex_down(&async_futex);
 	insert_timeout(&msg->wdata);
Index: uspace/lib/libc/include/async.h
===================================================================
--- uspace/lib/libc/include/async.h	(revision 1c1002a59405920f79394ae77cb3e4581d5aa403)
+++ uspace/lib/libc/include/async.h	(revision 2f08ff553b4b50a1b4ed9ffcbbc17baa71d59800)
@@ -119,5 +119,5 @@
  * User-friendly wrappers for async_req_fast() and async_req_slow(). The macros
  * are in the form async_req_m_n(), where m is the number of payload arguments
- * and n is the number of return arguments. The macros decidce between the fast
+ * and n is the number of return arguments. The macros decide between the fast
  * and slow verion based on m.
  */
