Como ficar acessível Thread.Sleep?

Estou escrevendo um aplicativo vinculado à rede com base no paradigma aguardar / dormir.

Às vezes, erros de conexão acontecem e, na minha experiência, vale a pena esperar por algum tempo e tentar novamente a operação.

O problema é que, se eu usar Thread.Sleep ou alguma operação de bloqueio semelhante em aguardar / assíncrono, ele bloqueia toda a atividade no encadeamento do chamador.

O que devo substituir Thread.Sleep (10000) com para obter o mesmo efeito que

await Thread.SleepAsync(10000)

?

ATUALIZAR

Eu prefiro uma resposta que faz isso sem criar tópicos adicionais

questionAnswers(1)

yourAnswerToTheQuestion