diff --git a/b2sdk/_internal/b2http.py b/b2sdk/_internal/b2http.py
index 0d0fe031..448b075c 100644
--- a/b2sdk/_internal/b2http.py
+++ b/b2sdk/_internal/b2http.py
@@ -551,6 +551,8 @@ def _translate_errors(cls, fcn, post_params=None):
                         # an upload request for cause, so we use a 400 Bad Request
                         # code.
                         raise BrokenPipe()
+                elif isinstance(e2, TimeoutError):
+                    raise B2RequestTimeout(str(e0))
             raise B2ConnectionError(str(e0))
 
         except requests.Timeout as e:
diff --git a/b2sdk/_internal/bounded_queue_executor.py b/b2sdk/_internal/bounded_queue_executor.py
index 16c17d05..dd90d0b7 100644
--- a/b2sdk/_internal/bounded_queue_executor.py
+++ b/b2sdk/_internal/bounded_queue_executor.py
@@ -54,7 +54,8 @@ def submit(self, fcn, *args, **kwargs):
         def run_it():
             try:
                 return fcn(*args, **kwargs)
-            except Exception:
+            except Exception as exc:
+                print(exc)
                 self.num_exceptions += 1
                 raise
             finally:
diff --git a/changelog.d/+17dd34ae.fixed.md b/changelog.d/+17dd34ae.fixed.md
new file mode 100644
index 00000000..9a890007
--- /dev/null
+++ b/changelog.d/+17dd34ae.fixed.md
@@ -0,0 +1 @@
+Add upload token reset after upload timeout.