in src/utils.h [48:63]
inline T waitForAsyncValue(std::function<void(std::function<void(Result, const T&)>)> func) {
auto resultPromise = std::make_shared<std::promise<Result>>();
auto valuePromise = std::make_shared<std::promise<T>>();
{
py::gil_scoped_release release;
func([resultPromise, valuePromise](Result result, const T& value) {
valuePromise->set_value(value);
resultPromise->set_value(result);
});
}
internal::waitForResult(*resultPromise);
return valuePromise->get_future().get();
}