async def _submit(self, req_json: str) -> str:
LOGGER.debug('<STR_LIT>', req_json)<EOL>if not self.pool.handle:<EOL><INDENT>LOGGER.debug('<STR_LIT>', self.pool.name)<EOL>raise ClosedPool('<STR_LIT>'.format(self.pool.name))<EOL><DEDENT>rv_json = await ledger.submit_request(self.pool.handle, req_json)<EOL>await asyncio.sleep(<NUM_LIT:0>)<EOL>resp = json.loads(rv_json)<EOL>if ('<STR_LIT>' in resp) and (resp['<STR_LIT>'] in ('<STR_LIT>', '<STR_LIT>')):<EOL><INDENT>LOGGER.debug('<STR_LIT>', resp['<STR_LIT>'])<EOL>raise BadLedgerTxn('<STR_LIT>'.format(resp['<STR_LIT>']))<EOL><DEDENT>if '<STR_LIT>' in resp and '<STR_LIT:result>' in resp and resp['<STR_LIT:result>'].get('<STR_LIT>', None) is None:<EOL><INDENT>LOGGER.debug('<STR_LIT>', resp['<STR_LIT>'])<EOL>raise BadLedgerTxn('<STR_LIT>'.format(resp['<STR_LIT>']))<EOL><DEDENT>LOGGER.debug('<STR_LIT>', rv_json)<EOL>return rv_json<EOL>
Submit (json) request to ledger; return (json) result.

Raise ClosedPool if pool is not yet open, or BadLedgerTxn on failure.

:param req_json: json of request to sign and submit
:return: json response