awesome WM doesn't suspend automatically when closing the lid, so I followed some instructions to get it working. I simply added a file
/etc/acpi/local/lid.sh.post with the following contents:
Suspending works now, but after I open the lid and press the power button it shows the desktop for a fraction of a second before suspending again! The second time I press the power button it resumes properly. After that, any time I suspend I have to press the power button and wait three times before it resumes properly. I've tried suspending four times in a row, and it doesn't seem to get any worse.
Solved! If anybody else wants it, I made a script to do this in one command.