code: async def fetch(self, limit: int = None) -> Sequence[StorageRecord]:
          
  
          LOGGER.debug('StorageRecordSearch.fetch >>> limit: %s', limit)
  
          if not self.opened:
              LOGGER.debug('StorageRecordSearch.fetch <!< Storage record search is closed')
              raise BadSearch('Storage record search is closed')
  
          if not self._wallet.opened:
              LOGGER.debug('StorageRecordSearch.fetch <!< Wallet %s is closed', self._wallet.name)
              raise WalletState('Wallet {} is closed'.format(self._wallet.name))
  
          records = json.loads(await non_secrets.fetch_wallet_search_next_records(
              self._wallet.handle,
              self.handle,
              limit or Wallet.DEFAULT_CHUNK))['records'] or []  # at exhaustion results['records'] = None
  
          rv = [StorageRecord(typ=rec['type'], value=rec['value'], tags=rec['tags'], ident=rec['id']) for rec in records]
          LOGGER.debug('StorageRecordSearch.fetch <<< %s', rv)
          return rv
docs: Fetch next batch of search results.
  
          Raise BadSearch if search is closed, WalletState if wallet is closed.
  
          :param limit: maximum number of records to return (default value Wallet.DEFAULT_CHUNK)
          :return: next batch of records found