Well forgot to mention it but this is v2 of 211827-211829,211833-211834.
I renamed what was "xinput PDO" to "gamepad PDO", and "internal PDO" to "xinput PDO" (as it's using a XINPUT\ bus id it made more sense).
The read requests are now completed both at the same time, by issuing a sync read request downwards when both have been received. If not, the first read that comes is kept pending, and will be completed when another read arrives on the other PDO.