def process!(body, url, effective_url)
      before_process!
      body = parse!(body)
      @process_callback.call(body, url, effective_url) if @process_callback
      after_process!
    rescue => e
      error!(e)
    end
def process!(body, url, effective_url)
      before_process!
      body = parse!(body)
      @process_callback.call(body, url, effective_url) if @process_callback
      after_process!
    rescue => e
      error!(e)
    end
Runs the process callback. If it fails with an exception, it will send
 the exception to the error callback.