diff --git a/lib/java/src/main/java/org/apache/thrift/server/AbstractNonblockingServer.java b/lib/java/src/main/java/org/apache/thrift/server/AbstractNonblockingServer.java
index af2bc63..310bb78 100644
--- a/lib/java/src/main/java/org/apache/thrift/server/AbstractNonblockingServer.java
+++ b/lib/java/src/main/java/org/apache/thrift/server/AbstractNonblockingServer.java
@@ -477,9 +477,12 @@
           || state_ == FrameBufferState.AWAITING_CLOSE) {
         readBufferBytesAllocated.addAndGet(-buffer_.array().length);
       }
-      trans_.close();
-      if (eventHandler_ != null) {
-        eventHandler_.deleteContext(context_, inProt_, outProt_);
+      try {
+        if (eventHandler_ != null) {
+          eventHandler_.deleteContext(context_, inProt_, outProt_);
+        }
+      } finally {
+        trans_.close();
       }
     }
 
diff --git a/lib/java/src/main/java/org/apache/thrift/transport/sasl/NonblockingSaslHandler.java b/lib/java/src/main/java/org/apache/thrift/transport/sasl/NonblockingSaslHandler.java
index 66a1e5f..930f8e8 100644
--- a/lib/java/src/main/java/org/apache/thrift/transport/sasl/NonblockingSaslHandler.java
+++ b/lib/java/src/main/java/org/apache/thrift/transport/sasl/NonblockingSaslHandler.java
@@ -416,20 +416,23 @@
    * selector.
    */
   public void close() {
-    underlyingTransport.close();
-    selectionKey.cancel();
-    if (saslPeer != null) {
-      saslPeer.dispose();
+    try {
+      if (serverContextCreated) {
+        eventHandler.deleteContext(
+            serverContext,
+            inputProtocolFactory.getProtocol(underlyingTransport),
+            outputProtocolFactory.getProtocol(underlyingTransport));
+      }
+    } finally {
+      selectionKey.cancel();
+      if (saslPeer != null) {
+        saslPeer.dispose();
+      }
+      nextPhase = Phase.CLOSED;
+      currentPhase = Phase.CLOSED;
+      underlyingTransport.close();
+      LOGGER.trace("Connection closed: {}", underlyingTransport);
     }
-    if (serverContextCreated) {
-      eventHandler.deleteContext(
-          serverContext,
-          inputProtocolFactory.getProtocol(underlyingTransport),
-          outputProtocolFactory.getProtocol(underlyingTransport));
-    }
-    nextPhase = Phase.CLOSED;
-    currentPhase = Phase.CLOSED;
-    LOGGER.trace("Connection closed: {}", underlyingTransport);
   }
 
   public enum Phase {
