code: def _redirect(self, redirect, auth):
          
          # pylint: disable=protected-access
          if not self._connection.cbs:
              _logger.debug("Closing non-CBS session.")
              self._session.destroy()
          self._session = None
          self._auth = auth
          self._hostname = self._remote_address.hostname
          self._connection.redirect(redirect, auth)
          if not self._connection.cbs and isinstance(self._auth, authentication.CBSAuthMixin):
              self._connection.cbs = self._auth.create_authenticator(
                  self._connection,
                  debug=self._debug_trace,
                  incoming_window=self._incoming_window,
                  outgoing_window=self._outgoing_window,
                  handle_max=self._handle_max,
                  on_attach=self._on_attach)
              self._session = self._auth._session
          elif self._connection.cbs:
              self._session = self._auth._session
          else:
              self._session = self.session_type(
                  self._connection,
                  incoming_window=self._incoming_window,
                  outgoing_window=self._outgoing_window,
                  handle_max=self._handle_max,
                  on_attach=self._on_attach)
docs: Redirect the client endpoint using a Link DETACH redirect
          response.
  
          :param redirect: The Link DETACH redirect details.
          :type redirect: ~uamqp.errors.LinkRedirect
          :param auth: Authentication credentials to the redirected endpoint.
          :type auth: ~uamqp.authentication.common.AMQPAuth