Demystifying async Lua in Neovim

Tying together callbacks, coroutines, and promises to escape the async callback hell.