Tokio and redis-rs hangs when sending

I have a minimal example of a worker, that gets jobs from Redis. For each job it processes it and then sends result back to Redis. The problem is when I try to send back the result it hangs. Weird thing is it does not hang indefinetly but only until new job arrives.

I am using connection manager which should have multiplexed connection (not that I know what is the difference from the normal connection) and I clone the connection so I should be fine?

use redis::{AsyncCommands, RedisResult, aio::{ConnectionManager}};
use tokio::time::{sleep, Duration};
use tokio::task;

#[tokio::main]
async fn main() {
    let client = redis::Client::open("redis://127.0.0.1/").unwrap();
    let mut connection = loop {
        match client.get_tokio_connection_manager().await {
            Ok(mngr) => break mngr,
            Err(e) => println!("MAIN errror {:?}", e),
        }
        println!("MAIN waiting 5 sec");
        sleep(Duration::from_secs(5)).await;
    };
    
    loop {
        println!("MAIN getting from queue");
        let result: redis::RedisResult<(String, String)> = connection.blpop("queue:worker", 0).await;
        if let Ok(value) = result {
            println!("MAIN received job {:?}", value);
            task::spawn(process_job(value.1, connection.clone()));
        } else {
            println!("MAIN error. waiting 5 sec");
            sleep(Duration::from_secs(5)).await;
        }
    }
}

async fn process_job(job: String, mut connection: ConnectionManager) {
    println!("PROCESSING started {}", job);
    let result: usize = connection.rpush("queue:result", String::from("result") + &job).await.unwrap();
    println!("PROCESSING done {}", job);
}

Output:

MAIN getting from queue
MAIN received job ("queue:worker", "job-1")
MAIN getting from queue
PROCESSING started job-1
>>> hangs here until I send new job
PROCESSING done job-1
MAIN received job ("queue:worker", "job-2")
MAIN getting from queue
PROCESSING started job-2