def METHOD_NAME(self):
    """ Perform an SSL handshake (usually called after renegotiate or one of
    set_accept_state or set_accept_state). This can raise the same exceptions as
    send and recv. """
    if self.act_non_blocking:
        return self.fd.METHOD_NAME()
    while True:
        try:
            return self.fd.METHOD_NAME()
        except WantReadError:
            trampoline(self.fd.fileno(),
                       read=True,
                       timeout=self.gettimeout(),
                       timeout_exc=socket.timeout)
        except WantWriteError:
            trampoline(self.fd.fileno(),
                       write=True,
                       timeout=self.gettimeout(),
                       timeout_exc=socket.timeout)