К сожалению, не вышло написать нормально.
Тут я попробовал разделить стрим на два набора - один аггрегирует всё, что не попало в throttle и ловит последний элемент в группах из n.
Но т.к. throttle начинает бэкпрешшу только после того, как получил хотя бы один элемент, его элемент может быть старше. Таким образом, порядок ломается
https://scastie.scala-lang.org/Odomontois/aPjgt5t1SLGpsCEXNqwdfw/2Думаю, если вам нужен чистый троттл по времени без ограничения на размер можно просто взять цепочку
.conflate .throttle