Fixed `consumer`.  Fixes #11

The previous implementation of `consumer` was delaying effects as late as
possible, when it was really supposed to execute them as early as possible.