@tornado.gen.coroutine
    def connect(self):
        try:
            self.auth = salt.crypt.AsyncAuth(self.opts, io_loop=self.io_loop)
            self.tok = self.auth.gen_token('salt')
            if not self.auth.authenticated:
                yield self.auth.authenticate()
            self.message_client = SaltMessageClient(
                self.opts,
                self.opts['master_ip'],
                int(self.auth.creds['publish_port']),
                io_loop=self.io_loop,
                connect_callback=self.connect_callback,
                disconnect_callback=self.disconnect_callback)
            yield self.message_client.connect()  # wait for the client to be connected
            self.connected = True
        # TODO: better exception handling...
        except __HOLE__:
            raise
        except:
            raise SaltClientError('Unable to sign_in to master')  # TODO: better error message
dataset/ETHPy150Open saltstack/salt/salt/transport/tcp.py/AsyncTCPPubChannel.connect