async def METHOD_NAME(self):
    retry_sleep = 1
    while True:
        try:
            if self.listener_connection is None:
                self.listener_connection = await self._connection()
                self.listener_channel = await self._channel(
                    self.listener_connection
                )
                await self.listener_channel.set_qos(prefetch_count=1)
                exchange = await self._exchange(self.listener_channel)
                self.listener_queue = await self._queue(
                    self.listener_channel, exchange
                )
                retry_sleep = 1
            async with self.listener_queue.iterator() as queue_iter:
                async for message in queue_iter:
                    async with message.process():
                        yield pickle.loads(message.body)
        except Exception:
            self._get_logger().error('Cannot receive from rabbitmq... '
                                     'retrying in '
                                     '{} secs'.format(retry_sleep))
            self.listener_connection = None
            await asyncio.sleep(retry_sleep)
            retry_sleep *= 2
            if retry_sleep > 60:
                retry_sleep = 60