Por lo que tengo entendido:
Un servidor http2 puede hacer un push por un stream disponible cualquiera, pero para notificar al cliente del mismo, envía una push promise en un stream que esté en uso. El caso canónico es que el cliente hace un GET de index.html y el servidor responde el recurso y en el mismo stream que la respuesta, una push promise referenciando otro stream por su id, para css y/o js asociado a la página.
En el obligatorio:
El push que queremos enviar es periódico (repetido potencialmente infinitas veces) y no hay garantías de que ningún stream particular esté abierto. De la RFC 7540:
Receiving a PUSH_PROMISE frame on another stream reserves an idle stream that is identified for later use. The stream state for the reserved stream transitions to "reserved (remote)". * Note that the PUSH_PROMISE frame is not sent on the idle stream but references the newly reserved stream in the Promised Stream ID field.
Aparentemente no es correcto (y no sé si viable) abrir un stream con el solo propósito de enviar una push promise. ¿A qué stream_id deberíamos enviar los push entonces?