code: def poll(
              self,
              transaction_hash: bytes,
      ):
          
          if len(transaction_hash) != 32:
              raise ValueError(
                  'transaction_hash must be a 32 byte hash',
              )
  
          transaction_hash = encode_hex(transaction_hash)
  
          # used to check if the transaction was removed, this could happen
          # if gas price is too low:
          #
          # > Transaction (acbca3d6) below gas price (tx=1 Wei ask=18
          # > Shannon). All sequential txs from this address(7d0eae79)
          # > will be ignored
          #
          last_result = None
  
          while True:
              # Could return None for a short period of time, until the
              # transaction is added to the pool
              transaction = self.web3.eth.getTransaction(transaction_hash)
  
              # if the transaction was added to the pool and then removed
              if transaction is None and last_result is not None:
                  raise Exception('invalid transaction, check gas price')
  
              # the transaction was added to the pool and mined
              if transaction and transaction['blockNumber'] is not None:
                  last_result = transaction
  
                  # this will wait for both APPLIED and REVERTED transactions
                  transaction_block = transaction['blockNumber']
                  confirmation_block = transaction_block + self.default_block_num_confirmations
  
                  block_number = self.block_number()
  
                  if block_number >= confirmation_block:
                      return transaction
  
              gevent.sleep(1.0)
docs: Wait until the `transaction_hash` is applied or rejected.
  
          Args:
              transaction_hash: Transaction hash that we are waiting for.