code: def wrap(self, data):
          
          length = self.tls_connection.send(data)
          encrypted_data = b''
          counter = 0
  
          while True:
              try:
                  encrypted_chunk = \
                      self.tls_connection.bio_read(self.BIO_BUFFER_SIZE)
              except SSL.WantReadError:
                  break
              encrypted_data += encrypted_chunk
  
              # in case of a borked TLS connection, break the loop if the current
              # buffer counter is > the length of the original message plus the
              # the size of the buffer (to be careful)
              counter += self.BIO_BUFFER_SIZE
              if counter > length + self.BIO_BUFFER_SIZE:
                  break
  
          return encrypted_data
docs: Encrypts the data in preparation for sending to the server. The data is
          encrypted using the TLS channel negotiated between the client and the
          server.
  
          :param data: a byte string of data to encrypt
          :return: a byte string of the encrypted data