-- utils.lua local M = {} function M.await(fn, timeout, interval) local done = false local ok, data -- Wrap resolve in vim.schedule so it runs on main loop fn(function(success, result) vim.schedule(function() done = true ok = success data = result end) end) vim.wait(timeout, function() return done end, interval) return { ok = ok or false, data = data } end return M