[fix] handle missing capture groups for async routing