Properly order asynchronous `before` & `after`

`before` and `after` handlers can be asynchronous, and they need to run
in series.