The current `5-0-x` branch and `master` are experiencing random `remote` API failures again.  We should look into this and fix before 5.0 stable.

Example: https://circleci.com/gh/electron/electron/138325
atom/common/api/atom_api_v8_util.cc
v8::Local<v8::Value> val,
                     std::pair<Type1, Type2>* out) {
    if (!val->IsArray())
      return false;
    v8::Local<v8::Array> array(v8::Local<v8::Array>::Cast(val));
    if (array->Length() != 2)
      return false;
    return Converter<Type1>::FromV8(isolate, array->Get(0), &out->first) &&
           Converter<Type2>::FromV8(isolate, array->Get(1), &out->second);
  }
};
}  
namespace {
v8::Local<v8::Value> GetHiddenValue(v8::Isolate* isolate,
                                    v8::Local<v8::Object> object,
                                    v8::Local<v8::String> key) {
  v8::Local<v8::Context> context = isolate->GetCurrentContext();
  v8::Local<v8::Private> privateKey = v8::Private::ForApi(isolate, key);
  v8::Local<v8::Value> value;
  v8::Maybe<bool> result = object->HasPrivate(context, privateKey);
  if (!(result.IsJust() && result.FromJust()))
    return v8::Local<v8::Value>();
  if (object->GetPrivate(context, privateKey).ToLocal(&value))
    return value;
  return v8::Local<v8::Value>();
}
void SetHiddenValue(v8::Isolate* isolate,