function summaryRanges($arr) {
$result = [];
$first = $arr[0] ?? 0;
$last = $arr[0] ?? 0;
for ($i = 1; $i < count($arr); $i++) {
if ($last != $arr[$i]-1) {
if ($first != $last) {
$result[] = [$first, $last];
}
$first = $arr[$i];
}
$last = $arr[$i];
}
if ($first != $last) {
$result[] = [$first, $last];
}
return $result;
}
И то, что нужно делать перебор результатов, тоже не добавляет асинхронности, просто такая неудачная реализация. Можно было и сразу массив ответов вернуть.
Если посмотреть функции more_results и next_result, то в их описании тоже нет ошибки "Ответ ещё не готов" или "Запрос ещё не выполнен".