docs: def _execute(self):
          """Invoke the lifecycle methods for a message
          (prepare, process, on_finish), yielding if any are coroutines.
  
          """
          for call in (self.prepare, self.process, self.on_finish):
              self.logger.debug('Invoking %r', call)
              result = call()
              if concurrent.is_future(result):
                  yield result