diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/degesch/last-fm.lua | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/plugins/degesch/last-fm.lua b/plugins/degesch/last-fm.lua index 5c836ca..8f6902d 100644 --- a/plugins/degesch/last-fm.lua +++ b/plugins/degesch/last-fm.lua @@ -118,24 +118,23 @@ end local running -- Initiate a connection to last.fm servers +async, await = degesch.async, coroutine.yield local make_request = function (buffer, action) if not user or not api_key then report_error (buffer, "configuration is incomplete") return end - if running then running.abort () end - - running = degesch.connect ("ws.audioscrobbler.com", 80, { - on_success = function (c, host) - on_connected (buffer, c, host, action) - running = nil - end, - on_error = function (e) + if running then running:cancel () end + running = async.go (function () + local c, host, e = await (async.dial ("ws.audioscrobbler.com", 80)) + if e then report_error (buffer, e) - running = nil + else + on_connected (buffer, c, host, action) end - }) + running = nil + end) end -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |