diff --git a/compiler/cpp/src/generate/t_py_generator.cc b/compiler/cpp/src/generate/t_py_generator.cc
index 5d23366..25ee45f 100644
--- a/compiler/cpp/src/generate/t_py_generator.cc
+++ b/compiler/cpp/src/generate/t_py_generator.cc
@@ -1279,19 +1279,23 @@
       indent(f_service_) << "self._seqid += 1" << endl;
       if (!(*f_iter)->is_oneway()) {
         indent(f_service_) <<
-          "d = self._reqs[self._seqid] = defer.Deferred()" << endl;
+          "self._reqs[self._seqid] = defer.Deferred()" << endl;
+        indent(f_service_) <<
+          "d = defer.maybeDeferred(self.send_" << funname << ",";
       }
     } else if (gen_tornado_) {
       indent(f_service_) << "self._seqid += 1" << endl;
       if (!(*f_iter)->is_oneway()) {
         indent(f_service_) <<
           "self._reqs[self._seqid] = callback" << endl;
+        indent(f_service_) <<
+          "self.send_" << funname << "(";
       }
+    } else {
+      indent(f_service_) <<
+        "self.send_" << funname << "(";
     }
 
-    indent(f_service_) <<
-      "self.send_" << funname << "(";
-
     bool first = true;
     for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
       if (first) {
@@ -1314,27 +1318,58 @@
     f_service_ << ")" << endl;
 
     if (!(*f_iter)->is_oneway()) {
-      f_service_ << indent();
+
       if (gen_twisted_) {
-        f_service_ << "return d" << endl;
+        indent(f_service_) << "d.addCallbacks(self.cb_send_" << funname << "," << endl <<
+          indent() << indent() << "errback=self.eb_send_" << funname << "," << endl <<
+          indent() << indent() << "callbackArgs=(self._seqid,)," << endl <<
+          indent() << indent() << "errbackArgs=(self._seqid,))" << endl;
+        indent(f_service_) << "return d" << endl;
+
       } else if (gen_tornado_) {
+        f_service_ << indent();
         f_service_ << "self.recv_dispatch()" << endl;
       } else {
+        f_service_ << indent();
         if (!(*f_iter)->get_returntype()->is_void()) {
           f_service_ << "return ";
         }
         f_service_ <<
           "self.recv_" << funname << "()" << endl;
       }
-    } else {
-      if (gen_twisted_) {
-        f_service_ <<
-          indent() << "return defer.succeed(None)" << endl;
-      }
     }
+
     indent_down();
     f_service_ << endl;
 
+    if (gen_twisted_) {
+      indent(f_service_) <<
+        "def cb_send_" << funname << "(self, _, seqid):" << endl;
+      indent_up();
+      if ((*f_iter)->is_oneway()) {
+        f_service_ <<
+          indent() << "d = self._reqs.pop(seqid)" << endl <<
+          indent() << "d.callback(None)" << endl;
+      } else {
+        f_service_ <<
+          indent() << "d = self._reqs[seqid]" << endl;
+      }
+      f_service_ << indent() << "return d" << endl;
+      indent_down();
+
+      f_service_ << endl;
+
+      indent(f_service_) <<
+        "def eb_send_" << funname << "(self, e, seqid):" << endl;
+      indent_up();
+      f_service_ <<
+        indent() << "d = self._reqs.pop(seqid)" << endl <<
+        indent() << "d.errback(e)" << endl <<
+        indent() << "return d" << endl;
+      indent_down();
+      f_service_ << endl;
+    }
+
     indent(f_service_) <<
       "def send_" << function_signature(*f_iter, false, MANDATORY_FOR_ONEWAY_ELSE_NONE) << ":" << endl;
 
@@ -1367,7 +1402,7 @@
       f_service_ <<
         indent() << "args.write(oprot)" << endl <<
         indent() << "oprot.writeMessageEnd()" << endl <<
-        indent() << "oprot.trans.flush()" << endl;
+        indent() << "return oprot.trans.flush()" << endl;
     } else if (gen_tornado_) {
       f_service_ <<
         indent() << "args.write(oprot)" << endl <<
diff --git a/lib/py/src/transport/TTwisted.py b/lib/py/src/transport/TTwisted.py
index 2b77414..0e03f08 100644
--- a/lib/py/src/transport/TTwisted.py
+++ b/lib/py/src/transport/TTwisted.py
@@ -42,7 +42,7 @@
     def flush(self):
         msg = self.__wbuf.getvalue()
         self.__wbuf = StringIO()
-        self.sendMessage(msg)
+        return defer.maybeDeferred(self.sendMessage, msg)
 
     def sendMessage(self, message):
         raise NotImplementedError
@@ -55,7 +55,7 @@
         self.func = func
 
     def sendMessage(self, message):
-        self.func(message)
+        return self.func(message)
 
 
 class ThriftClientProtocol(basic.Int32StringReceiver):
