diff --git a/src/coeio.cc b/src/coeio.cc
index 20fb126e68547bc6a60a1674fcd1e26524c6c15f..16c53866b22e89e428944ed29c7afc4ec3bc8a94 100644
--- a/src/coeio.cc
+++ b/src/coeio.cc
@@ -191,7 +191,6 @@ async_on_call(eio_req *req)
  * func sets errno, the errno is preserved across the call.
  *
  * @retval -1 and errno = ENOMEM if failed to create a task
- * @retval -1 and errno = ETIMEDOUT if timed out
  * @retval the function return (errno is preserved).
  *
  * @code
@@ -210,6 +209,8 @@ ssize_t
 async_call(ssize_t (*func)(va_list ap), ...)
 {
 	struct async_task *task = (struct async_task *) calloc(1, sizeof(*task));
+	if (task == NULL)
+		return -1; /* errno = ENOMEM */
 	/* from eio.c: REQ() definition */
 	task->base.type = EIO_CUSTOM;
 	task->base.feed = async_on_call;