Issue #10429: IMAP.starttls() stored the capabilities as bytes objects,
rather than strings.
diff --git a/Lib/imaplib.py b/Lib/imaplib.py
index 421cb97..9c38e1c 100644
--- a/Lib/imaplib.py
+++ b/Lib/imaplib.py
@@ -196,13 +196,7 @@
         else:
             raise self.error(self.welcome)
 
-        typ, dat = self.capability()
-        if dat == [None]:
-            raise self.error('no CAPABILITY response from server')
-        dat = str(dat[-1], "ASCII")
-        dat = dat.upper()
-        self.capabilities = tuple(dat.split())
-
+        self._get_capabilities()
         if __debug__:
             if self.debug >= 3:
                 self._mesg('CAPABILITIES: %r' % (self.capabilities,))
@@ -737,10 +731,7 @@
             self.sock = ssl_context.wrap_socket(self.sock)
             self.file = self.sock.makefile('rb')
             self._tls_established = True
-            typ, dat = self.capability()
-            if dat == [None]:
-                raise self.error('no CAPABILITY response from server')
-            self.capabilities = tuple(dat[-1].upper().split())
+            self._get_capabilities()
         else:
             raise self.error("Couldn't establish TLS session")
         return self._untagged_response(typ, dat, name)
@@ -956,6 +947,15 @@
         return typ, data
 
 
+    def _get_capabilities(self):
+        typ, dat = self.capability()
+        if dat == [None]:
+            raise self.error('no CAPABILITY response from server')
+        dat = str(dat[-1], "ASCII")
+        dat = dat.upper()
+        self.capabilities = tuple(dat.split())
+
+
     def _get_response(self):
 
         # Read response and store.