Explicit entry. Opens pool as configured, for later closure via close().
        For use when keeping pool open across multiple calls.

        Raise any IndyError causing failure to create ledger configuration.

        :return: current object

async def open(self) -> 'NodePool':
        """
        Explicit entry. Opens pool as configured, for later closure via close().
        For use when keeping pool open across multiple calls.

        Raise any IndyError causing failure to create ledger configuration.

        :return: current object
        """

        LOGGER.debug('NodePool.open >>>')

        try:
            await pool.set_protocol_version(2)  # 1 for indy-node 1.3, 2 for indy-node 1.4
            await pool.create_pool_ledger_config(self.name, json.dumps({'genesis_txn': str(self.genesis_txn_path)}))
        except IndyError as x_indy:
            if x_indy.error_code == ErrorCode.PoolLedgerConfigAlreadyExistsError:
                LOGGER.info('Pool ledger config for %s already exists', self.name)
            else:
                LOGGER.debug('NodePool.open: <!< indy error code %s', x_indy.error_code)
                raise x_indy

        self._handle = await pool.open_pool_ledger(self.name, json.dumps(self.cfg))

        LOGGER.debug('NodePool.open <<<')
        return self