И почему бы вообще не использовать промисы вместо колбэков?
while low < len(lst) and not search_res:
Класс std::minstd_rand из библиотеки STL random работает быстрее обыкновенного rand() и может стать его альтернативной заменой, если вас не особо волнует длинна периода в minstd.
Красивое, мне понравилось.