Intentar comprender por qué crear y manipular futuros es una mala práctica.

Estoy tratando de entender los futuros en Python leyendo la guía de PyMotW .

Ayer hice una pregunta , y en los comentarios, se afirmó que:

Un problema más serio con la guía es que la creación y manipulación de futuros sin procesar se considera un mal estilo en la progtwigción asíncrona moderna.

Intenté buscar más información, pero lo más cercano que encontré fue en la guía de Python sobre el futuro :

La regla de oro es nunca exponer los objetos futuros en las API orientadas al usuario, y la forma recomendada de crear un objeto futuro es llamar a loop.create_future (). De esta manera, las implementaciones de bucles de eventos alternativos pueden inyectar sus propias implementaciones optimizadas de un objeto Future.

    Pregunta:

    ¿Por qué se considera una mala práctica crear y manipular futuros? ¿Están las razones documentadas en alguna parte?

    Gracias a @ user4815162342, por proporcionar un enlace a la presentación async / await de Yury Selivanov.

    Me las arreglé para acercarme y preguntarle. Esto es lo que dijo.

    La advertencia está ahí porque Future es una API de bajo nivel. Debería usarlo para construir una fachada asíncrona / en espera alrededor del código basado en devoluciones de llamadas existentes. Pero si está escribiendo código async / await desde cero, existen API async / await integradas de nivel superior en asyncio que son más fáciles de usar (y menos propensas a errores).