code: async def pull_metrics(self, event_fn, loop=None):
          
          if self.lazy and not self.ready:
              return None
          logger = self.get_logger()
  
          ts = timer()
          logger.trace("Waiting for process event")
          result = await self.process(event_fn)
          td = int(timer() - ts)
          logger.trace("It took: {}ms".format(td))
          self._last_run = current_ts()
          return result
docs: Method called by core.
          Should not be overwritten.