do you mean
setmetatable({}, {__index = function(tab, key) local co = coroutine.running() uv.read(fd, function(err, result) tab[key] = result return coroutine.resume(result) end) return coroutine.yield() end })
do you mean
This is an incomplete implementation, clearly: but I've never missed Promises with coroutines and libuv.