code: async def brpoplpush(self, src, dst, timeout=0):
          
          try:
              value = await self.brpop(src, timeout=timeout)
              if value is None:
                  return None
          except TimeoutError:
              # Timeout was reached
              return None
  
          await self.lpush(dst, value[1])
          return value[1]
docs: Pop a value off the tail of ``src``, push it on the head of ``dst``
          and then return it.
  
          This command blocks until a value is in ``src`` or until ``timeout``
          seconds elapse, whichever is first. A ``timeout`` value of 0 blocks
          forever.
  
          Cluster impl:
              Call brpop() then send the result into lpush()
  
              Operation is no longer atomic.