diff -r ede0a342ed7e Lib/concurrent/futures/_base.py --- a/Lib/concurrent/futures/_base.py Thu Jan 23 16:49:22 2014 +0200 +++ b/Lib/concurrent/futures/_base.py Fri Jan 24 08:51:59 2014 -0500 @@ -190,11 +190,12 @@ if timeout is not None: end_time = timeout + time.time() + fs = set(fs) with _AcquireFutures(fs): finished = set( f for f in fs if f._state in [CANCELLED_AND_NOTIFIED, FINISHED]) - pending = set(fs) - finished + pending = fs - finished waiter = _create_and_install_waiters(fs, _AS_COMPLETED) try: