 
     if not messageId or not (message = GmailApp.getMessageById messageId)
       Logger.log "Given message ID '%s' is not valid", messageId
-      throw ErrorCodes.INVALID_MESSAGE_ID
+      throw new Error ErrorCodes.INVALID_MESSAGE_ID,
+        email:      encodeURIComponent @getEmail()
+        messageId:  messageId
 
     now = new Date().getTime()
     matches = form.when?.match /^(delta|specified):([0-9]+)/

      else
        unless form.when
          Logger.log 'No scheduling time given'
          throw ErrorCodes.NO_SCHEDULE_TIME
        else
          Logger.log "Given scheduling time '%s' is not valid", form.when
          throw ErrorCodes.INVALID_SCHEDULE_TIME

    props =
      messageId: messageId

      @addButlerMail params
      true
    catch e
      e.getLocalisedMessage()

  @uninstall: (automatic) ->
    if not automatic and (base = ScriptApp.getService().getUrl())
