¿Cómo llegar a la espera de Thread.Sleep?

Estoy escribiendo una aplicación vinculada a la red basada en el paradigma await / sleep.

A veces, los errores de conexión ocurren y, según mi experiencia, vale la pena esperar un tiempo y volver a intentar la operación.

El problema es que si uso Thread.Sleep o alguna operación de bloqueo similar en espera / asíncrono, bloquea toda la actividad en el subproceso de la persona que llama.

¿Con qué debo reemplazar Thread.Sleep (10000) para lograr el mismo efecto que

await Thread.SleepAsync(10000)

?

ACTUALIZAR

Prefiero una respuesta que haga esto sin crear hilos adicionales.

Respuestas a la pregunta(1)

Su respuesta a la pregunta