diff --git a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/TcpTransport.java b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/TcpTransport.java
index 5d75370..3bbacb8 100644
--- a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/TcpTransport.java
+++ b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/TcpTransport.java
@@ -283,21 +283,21 @@
 
         if( max_read_rate!=0 || max_write_rate!=0 ) {
             rateLimitingChannel = new RateLimitingChannel();
-            schedualRateAllowanceReset();
+            scheduleRateAllowanceReset();
         }
 
         remoteAddress = channel.socket().getRemoteSocketAddress().toString();
         listener.onTransportConnected(this);
     }
 
-    private void schedualRateAllowanceReset() {
+    private void scheduleRateAllowanceReset() {
         dispatchQueue.executeAfter(1, TimeUnit.SECONDS, new Runnable(){
             public void run() {
                 if (!socketState.isConnected()) {
                     return;
                 }
                 rateLimitingChannel.resetAllowance();
-                schedualRateAllowanceReset();
+                scheduleRateAllowanceReset();
             }
         });
     }
diff --git a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TCPServer.java b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TCPServer.java
index 086d6f2..3ffb385 100644
--- a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TCPServer.java
+++ b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TCPServer.java
@@ -87,7 +87,7 @@
         String methodName = (String)ois.readObject();
         Object[] args = (Object[])ois.readObject();
         Object result = invoker.invoke(methodName, args);
-        result = resolveAsnyc(result);
+        result = resolveAsync(result);
         if (result instanceof InvocationTargetException) {
             result = ((InvocationTargetException) result).getCause();
         }
@@ -95,7 +95,7 @@
     }
 
     @SuppressWarnings("unchecked")
-    private Object resolveAsnyc(Object result) throws InterruptedException {
+    private Object resolveAsync(Object result) throws InterruptedException {
         if (result instanceof Future) {
             Future<Object> fu = (Future<Object>) result;
             try {
diff --git a/provider/tcp/src/test/java/org/apache/aries/rsa/provider/tcp/TcpProviderIntentTest.java b/provider/tcp/src/test/java/org/apache/aries/rsa/provider/tcp/TcpProviderIntentTest.java
index 1458e34..0c77597 100644
--- a/provider/tcp/src/test/java/org/apache/aries/rsa/provider/tcp/TcpProviderIntentTest.java
+++ b/provider/tcp/src/test/java/org/apache/aries/rsa/provider/tcp/TcpProviderIntentTest.java
@@ -51,7 +51,7 @@
     }
     
     @Test
-    public void basicAndAsnycIntents() {
+    public void basicAndAsyncIntents() {
         Map<String, Object> props = new HashMap<>();
         EndpointHelper.addObjectClass(props, exportedInterfaces);
         String[] standardIntents = new String[] {"osgi.basic", "osgi.async"};
