All except `GetAsDictionary()`. Please use new shiny methods instead.
https://chromium.googlesource.com/chromium/src/+/master/base/values.h
atom/browser/net/js_asker.cc
const JavaScriptHandler& handler,
                   std::unique_ptr<base::DictionaryValue> request_details,
                   const BeforeStartCallback& before_start,
                   const ResponseCallback& callback) {
  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
  v8::Locker locker(isolate);
  v8::HandleScope handle_scope(isolate);
  v8::Local<v8::Context> context = isolate->GetCurrentContext();
  v8::Context::Scope context_scope(context);
  handler.Run(*(request_details.get()),
              mate::ConvertToV8(isolate, base::Bind(&HandlerCallback,
                                                    before_start, callback)));
}
bool IsErrorOptions(base::Value* value, int* error) {
  if (value->is_dict()) {
    base::DictionaryValue* dict = static_cast<base::DictionaryValue*>(value);
    if (dict->GetInteger("error", error))
      return true;
  } else if (value->is_int()) {
    if (value->GetAsInteger(error))
      return true;
  }
  return false;
}
}  
}