tokio::spawn() как раз и есть та возможность.
Просто async fn футуры ленивые и когда ты пишешь tokio::spawn(async move { proxy(); }) (при условии, что proxy - async fn), то собственно просто ничего не происходит, то есть создается футура, но она не выполняется.
Поэтому ее там надо .await, чтобы она стала выполняться
Ну и с + Send там правильное решение.