diff --git a/telethon/telegram_bare_client.py b/telethon/telegram_bare_client.py
index fc89d12f..98ddf6d0 100644
--- a/telethon/telegram_bare_client.py
+++ b/telethon/telegram_bare_client.py
@@ -416,25 +416,11 @@ class TelegramBareClient:
 
     # region Invoking Telegram requests
 
-    def _get_sender(self, on_main_thread=None):
-        """Gets the appropriated sender based on the current thread"""
-        if on_main_thread is None:
-            on_main_thread = threading.get_ident() == self._main_thread_ident
-
-        if on_main_thread or self._on_read_thread():
-            sender = self._sender
-        else:
-            sender = self._sender.clone()
-            sender.connect()
-        return sender
-
-    def __call__(self, *requests, retries=5, sender=None):
+    def __call__(self, *requests, retries=5):
         """Invokes (sends) a MTProtoRequest and returns (receives) its result.
 
            The invoke will be retried up to 'retries' times before raising
            ValueError().
-
-           If 'sender' is not None, it will override the sender to be used.
         """
         if not all(isinstance(x, TLObject) and
                    x.content_related for x in requests):
@@ -442,7 +428,11 @@ class TelegramBareClient:
 
         # Determine the sender to be used (main or a new connection)
         on_main_thread = threading.get_ident() == self._main_thread_ident
-        sender = sender or self._get_sender(on_main_thread=on_main_thread)
+        if on_main_thread or self._on_read_thread():
+            sender = self._sender
+        else:
+            sender = self._sender.clone()
+            sender.connect()
 
         # We should call receive from this thread if there's no background
         # thread reading or if the server disconnected us and we're trying
@@ -696,10 +686,6 @@ class TelegramBareClient:
 
         # The used client will change if FileMigrateError occurs
         client = self
-        # TODO Keeping just another variable for a sender feels messy, improve.
-        # This is done not to call .connect() for every single piece of the
-        # file we'll be trying to download, if we were from another thread.
-        sender = self._get_sender()
         cdn_decrypter = None
 
         try:
@@ -711,7 +697,7 @@ class TelegramBareClient:
                     else:
                         result = client(GetFileRequest(
                             input_location, offset, part_size
-                        ), sender=sender)
+                        ))
 
                         if isinstance(result, FileCdnRedirect):
                             cdn_decrypter, result = \
@@ -720,11 +706,7 @@ class TelegramBareClient:
                                 )
 
                 except FileMigrateError as e:
-                    if sender != self._sender:
-                        sender.disconnect()
                     client = self._get_exported_client(e.new_dc)
-                    # Client connected on this thread -> uses the right sender
-                    sender = None
                     continue
 
                 offset += part_size
@@ -739,8 +721,6 @@ class TelegramBareClient:
                 if progress_callback:
                     progress_callback(f.tell(), file_size)
         finally:
-            if sender != self._sender:
-                sender.disconnect()
             if client != self:
                 client.disconnect()