diff --git a/lib/erl/README b/lib/erl/README
index 7147381..815e1fb 100644
--- a/lib/erl/README
+++ b/lib/erl/README
@@ -9,7 +9,7 @@
 {error,{bad_args,testVoid,[asdf]}}
 121> thrift_client:call(C, testI32, [123]).
 {ok,123}
-122> thrift_client:call(C, testAsync, [1]).
+122> thrift_client:call(C, testOneway, [1]).
 {ok,ok}
 123> catch thrift_client:call(C, testXception, ["foo"]).
 {error,{no_function,testXception}}
diff --git a/lib/erl/src/thrift_processor.erl b/lib/erl/src/thrift_processor.erl
index 2f5a81b..3344666 100644
--- a/lib/erl/src/thrift_processor.erl
+++ b/lib/erl/src/thrift_processor.erl
@@ -62,13 +62,13 @@
 
 handle_function_catch(State = #thrift_processor{service = Service},
                       Function, ErrType, ErrData) ->
-    IsAsync = Service:function_info(Function, reply_type) =:= async_void,
+    IsOneway = Service:function_info(Function, reply_type) =:= async_void,
 
     case {ErrType, ErrData} of
-        _ when IsAsync ->
+        _ when IsOneway ->
             Stack = erlang:get_stacktrace(),
             error_logger:warning_msg(
-              "async void ~p threw error which must be ignored: ~p",
+              "oneway void ~p threw error which must be ignored: ~p",
               [Function, {ErrType, ErrData, Stack}]),
             ok;
 
diff --git a/lib/java/test/org/apache/thrift/test/TestClient.java b/lib/java/test/org/apache/thrift/test/TestClient.java
index 91b3ec5..324bc92 100644
--- a/lib/java/test/org/apache/thrift/test/TestClient.java
+++ b/lib/java/test/org/apache/thrift/test/TestClient.java
@@ -354,17 +354,17 @@
         System.out.print("}\n");
 
         // Test oneway
-        System.out.print("testAsync(3)...");
-        long startAsync = System.nanoTime();
-        testClient.testAsync(3);
-        long asyncElapsedMillis = (System.nanoTime() - startAsync) / 1000000;
-        if (asyncElapsedMillis > 200) {
-          throw new Exception("Async test failed: took " +
-                              Long.toString(asyncElapsedMillis) +
+        System.out.print("testOneway(3)...");
+        long startOneway = System.nanoTime();
+        testClient.testOneway(3);
+        long onewayElapsedMillis = (System.nanoTime() - startOneway) / 1000000;
+        if (onewayElapsedMillis > 200) {
+          throw new Exception("Oneway test failed: took " +
+                              Long.toString(onewayElapsedMillis) +
                               "ms");
         } else {
           System.out.println("Success - took " +
-                             Long.toString(asyncElapsedMillis) +
+                             Long.toString(onewayElapsedMillis) +
                              "ms");
         }
 
diff --git a/lib/java/test/org/apache/thrift/test/TestServer.java b/lib/java/test/org/apache/thrift/test/TestServer.java
index 989fbe6..2b36ad0 100644
--- a/lib/java/test/org/apache/thrift/test/TestServer.java
+++ b/lib/java/test/org/apache/thrift/test/TestServer.java
@@ -233,8 +233,8 @@
       return result;
     }
 
-    public void testAsync(int sleepFor) {
-      System.out.println("testAsync(" + Integer.toString(sleepFor) +
+    public void testOneway(int sleepFor) {
+      System.out.println("testOneway(" + Integer.toString(sleepFor) +
                          ") => sleeping...");
       try {
         Thread.sleep(sleepFor * 1000);
diff --git a/lib/py/src/server/TNonblockingServer.py b/lib/py/src/server/TNonblockingServer.py
index 816827c..2f8b76b 100644
--- a/lib/py/src/server/TNonblockingServer.py
+++ b/lib/py/src/server/TNonblockingServer.py
@@ -148,7 +148,7 @@
         This function is the only function witch can be called asynchronous.
         
         The ready can switch Connection to three states:
-            WAIT_LEN if request was async.
+            WAIT_LEN if request was oneway.
             SEND_ANSWER if request was processed in normal way.
             CLOSED if request throws unexpected exception.
         
