docs: def _read(self, n):
          """
          It seems that SSL Objects read() method may not supply as much
          as you're asking for, at least with extremely large messages.
          somewhere > 16K - found this in the test_channel.py test_large
          unittest.
  
          """
          result = self.sslobj.read(n)
  
          while len(result) < n:
              s = self.sslobj.read(n - len(result))
              if not s:
                  raise IOError('Socket closed')
              result += s
  
          return result