fix dbus

As evidenced by the comments in the code, this is a little bit of a hack.
However, I've looked into several other ways of doing this, and none of them
seem satisfactory right now. Ideally, someone would come along and implement an
asyncio-based dbus library, but until that day, we're left with this code.

Closes #508