diff --git a/telethon/update_state.py b/telethon/update_state.py
index <HASH>..<HASH> 100644
--- a/telethon/update_state.py
+++ b/telethon/update_state.py
@@ -62,23 +62,23 @@ class UpdateState:
         """
         self.stop_workers()
         self._workers = n
-        if n is None:
-            while self._updates:
-                self._updates.get()
-        else:
+        if n is not None:
             self.setup_workers()
 
     workers = property(fget=get_workers, fset=set_workers)
 
     def stop_workers(self):
-        """Raises "StopIterationException" on the worker threads to stop them,
-           and also clears all of them off the list
+        """
+        Raises "StopIterationException" on the worker threads to stop
+        them, and also clears all the workers/updates from the lists.
         """
         if self._workers:
             with self._updates_lock:
                 # Insert at the beginning so the very next poll causes an error
                 # on all the worker threads
                 # TODO Should this reset the pts and such?
+                while self._updates:
+                    self._updates.get()
                 for _ in range(self._workers):
                     self._updates.put(StopIteration())
Better attempt at joining update worker threads