diff --git a/nifty-core/src/main/java/com/facebook/nifty/core/NiftyDispatcher.java b/nifty-core/src/main/java/com/facebook/nifty/core/NiftyDispatcher.java
index <HASH>..<HASH> 100644
--- a/nifty-core/src/main/java/com/facebook/nifty/core/NiftyDispatcher.java
+++ b/nifty-core/src/main/java/com/facebook/nifty/core/NiftyDispatcher.java
@@ -118,8 +118,11 @@ public class NiftyDispatcher extends SimpleChannelUpstreamHandler
                         RequestContext.clearCurrentContext();
                     }
 
-                    ThriftMessage response = message.getMessageFactory().create(messageTransport.getOutputBuffer());
-                    writeResponse(ctx, response, requestSequenceId, message.isOrderedResponsesRequired());
+                    // Only write response if the client is still there
+                    if (ctx.getChannel().isConnected()) {
+                        ThriftMessage response = message.getMessageFactory().create(messageTransport.getOutputBuffer());
+                        writeResponse(ctx, response, requestSequenceId, message.isOrderedResponsesRequired());
+                    }
                 }
                 catch (TException e) {
                     Channels.fireExceptionCaught(ctx, e);
Skip writing responses if client disconnected while the request was running