Refactor of ExpectationHandler

As promised an attempt at refactoring #373's `ExpectationHandler` changes to not
use the block/super implementation that I found confusing on first pass.

WDYT @myronmarston?