code: async def _submit(self, req_json: str) -> str:
          
  
          LOGGER.debug('BaseAnchor._submit >>> req_json: %s', req_json)
  
          if not self.pool:
              LOGGER.debug('BaseAnchor._submit <!< absent pool')
              raise AbsentPool('Cannot submit request: absent pool')
  
          if not self.pool.handle:
              LOGGER.debug('BaseAnchor._submit <!< closed pool %s', self.pool.name)
              raise ClosedPool('Cannot submit request to closed pool {}'.format(self.pool.name))
  
          rv_json = await ledger.submit_request(self.pool.handle, req_json)
          await asyncio.sleep(0)
  
          resp = json.loads(rv_json)
          if resp.get('op', '') in ('REQNACK', 'REJECT'):
              LOGGER.debug('BaseAnchor._submit <!< ledger rejected request: %s', resp['reason'])
              raise BadLedgerTxn('Ledger rejected transaction request: {}'.format(resp['reason']))
  
          LOGGER.debug('BaseAnchor._submit <<< %s', rv_json)
          return rv_json
docs: Submit (json) request to ledger; return (json) result.
  
          Raise AbsentPool for no pool, ClosedPool if pool is not yet open, or BadLedgerTxn on failure.
  
          :param req_json: json of request to sign and submit
          :return: json response