code: async def listen(self, address, target):
          '''
          starts event listener for the contract
          :return:
          '''
  
          if not address:
              return None, "listening address not provided"
  
          EZO.log.info(bright("hello ezo::listening to address: {}".format(blue(address))))
          interval = self._ezo.config["poll-interval"]
  
          event_filter = self._ezo.w3.eth.filter({"address": address, "toBlock": "latest"})
          loop = asyncio.new_event_loop()
          try:
              while True:
                  for event in event_filter.get_new_entries():
                      if EZO.log:
                          EZO.log.debug(bright("event received: {}".format(event)))
                      ContractEvent.handler(event, self, target)
                  await asyncio.sleep(interval)
          except Exception as e:
              return None, e
          finally:
              loop.close(ync def listen(self, address, target):
          '''
          starts event listener for the contract
          :return:
          '''
  
          if not address:
              return None, "listening address not provided"
  
          EZO.log.info(bright("hello ezo::listening to address: {}".format(blue(address))))
          interval = self._ezo.config["poll-interval"]
  
          event_filter = self._ezo.w3.eth.filter({"address": address, "toBlock": "latest"})
          loop = asyncio.new_event_loop()
          try:
              while True:
                  for event in event_filter.get_new_entries():
                      if EZO.log:
                          EZO.log.debug(bright("event received: {}".format(event)))
                      ContractEvent.handler(event, self, target)
                  await asyncio.sleep(interval)
          except Exception as e:
              return None, e
          finally:
              loop.close()
docs: starts event listener for the contract
          :return: