Move setting of ioready 'wait' earlier in call chain, to
rpc.SocketIO.main() and asyncreturn().  Improve comment.
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index a0f1869..12e677d 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -7,11 +7,27 @@
 
 *Release date: xx-xxx-2003*
 
+- Implemented the 'interrupt' extension module, which allows a subthread
+  to raise a KeyboardInterrupt in the main thread.
+
+- Attempting to save the shell raised an error related to saving
+  breakpoints, which are not implemented in the shell
+
+- Provide a correct message when 'exit' or 'quit' are entered at the
+  IDLE command prompt  SF 695861
+
+- Eliminate extra blank line in shell output caused by not flushing
+  stdout when user code ends with an unterminated print. SF 695861
+
+- Moved responsibility for exception formatting (i.e. pruning IDLE internal
+  calls) out of rpc.py into the client and server.
+
 - Exit IDLE cleanly even when doing subprocess I/O
 
 - Handle subprocess interrupt in Windows with an RPC message.  
 
 - Calling Run will restart the subprocess even if user code is running.
+  SF RFE 661321
 
 - Restart the subprocess if it terminates itself. (VPython programs do that)
 
diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py
index 9895ac8..615c1f4 100644
--- a/Lib/idlelib/rpc.py
+++ b/Lib/idlelib/rpc.py
@@ -192,7 +192,7 @@
 
     def asyncreturn(self, seq):
         self.debug("asyncreturn:%d:call getresponse(): " % seq)
-        response = self.getresponse(seq)
+        response = self.getresponse(seq, wait=None)
         self.debug(("asyncreturn:%d:response: " % seq), response)
         return self.decoderesponse(response)
 
@@ -211,17 +211,17 @@
     def mainloop(self):
         """Listen on socket until I/O not ready or EOF
 
-        pollpacket() will loop looking for seq number None, which never
-        comes.  The loop will exit when self.ioready() returns 0.
+        Main thread pollresponse() will loop looking for seq number None, which
+        never comes, and exit on EOFError.
 
         """
         try:
-            self.getresponse(None)
+            self.getresponse(myseq=None, wait=None)
         except EOFError:
             pass
 
-    def getresponse(self, myseq):
-        response = self._getresponse(myseq)
+    def getresponse(self, myseq, wait):
+        response = self._getresponse(myseq, wait)
         if response is not None:
             how, what = response
             if how == "OK":
@@ -236,13 +236,13 @@
         # XXX Check for other types -- not currently needed
         return obj
 
-    def _getresponse(self, myseq):
+    def _getresponse(self, myseq, wait):
         self.debug("_getresponse:myseq:", myseq)
         if threading.currentThread() is self.mainthread:
             # Main thread: does all reading of requests or responses
             # Loop here, blocking each time until socket is ready.
             while 1:
-                response = self.pollresponse(myseq, wait=None)
+                response = self.pollresponse(myseq, wait)
                 if response is not None:
                     return response
         else: