    # File lib/vmail/imap_client.rb, line 806
        def reconnect_if_necessary(timeout = 60, &block)
          # if this times out, we know the connection is stale while the user is
          # trying to update
          Timeout::timeout(timeout) do
            block.call
          end
        rescue IOError, Errno::EADDRNOTAVAIL, Errno::ECONNRESET, Timeout::Error
          log "Error: #{$!}"
          log "Attempting to reconnect"
          close
          log(revive_connection)
          # hope this isn't an endless loop
          reconnect_if_necessary do
            block.call
          end
        rescue
          log "Error: #{$!}"
          raise
        end