You may find this post helpful as it relates to search iterators
You can check if its the iteration causing the slowness by removing the call to self.call_js and timing the iteration. I suspect you’ll find the same issue because iterating over 10,000 datatable rows on the client will result in several server calls to fetch data (a search iterator is lazy and fetches rows in batches).