¿Cómo esperar varias llamadas asíncronas anidadas usando RxJava-Android?

Soy nuevo en RxJava, aquí está mi caso,

enviar solicitud A y obtendráList<A> espaldapara cada A, envíe la solicitud AA y recuperará AA, vinculará A y AA y luegohay B & BB con lógica similarhacer algo solo después de completar todas las solicitudes

Ejemplo:

request(url1, callback(List<A> listA) {
    for (A a : listA) {
        request(url2, callback(AA aa) {
            a.set(aa);
        }
    }
}

A y B son independientes

¿Cómo estructurar el código? También utilicé Retrofit como cliente de red.

Respuestas a la pregunta(1)

Su respuesta a la pregunta