 
       # Super Important Issues to vote about
       when "poop"
-        if Vote.current
-          msg.reply "A vote is already in progress, hold up."
-          return
-        vote = new Vote robot, msg, ->
-          msg.send msg.random [
-            "Poop is coming out",
-            "I am pooping"
-            "Butt evacuation in progress.",
-          ]
-        vote.start()
-        msg.send "New Vote: Should I poop!?"
+        try
+          vote = new Vote robot, msg, "Should I poop!?", ->
+            msg.send msg.random [
+              "Poop is coming out",
+              "I am pooping"
+              "Butt evacuation in progress.",
+            ]
+          vote.start()
+        catch error
+          msg.reply error
 
       # Shut up, loony bin
       else

      no: []

  start: () =>
    fn = =>
      do @maybeFinish
      return if @finished
      @expired = true
      @finish()
    @timeout = setTimeout fn, @length
    # Note myself if I haven't been yet
    Vote.current ?= this

  yes: (who) =>
    @_vote 'yes', who

## Dat model
class Vote
  @current = null
  length: 30 * 1000

  ## Internal API
  finish: () =>
    # Close the gate, and update the current vote
    @finished = true
