diff --git a/src/core/renderer/web_channel_ipc_transport.cpp b/src/core/renderer/web_channel_ipc_transport.cpp
index 2ca6640c6720cbfcc5067252275e4c6020c1f487..161d6f49361af1baa4c3f86c2a64cb60f7552d77 100644
--- a/src/core/renderer/web_channel_ipc_transport.cpp
+++ b/src/core/renderer/web_channel_ipc_transport.cpp
@@ -223,9 +223,12 @@ void WebChannelIPCTransport::dispatchWebChannelMessage(const std::vector<char> &
     }
 
     v8::Handle<v8::Object> messageObject(v8::Object::New(isolate));
-    messageObject->ForceSet(v8::String::NewFromUtf8(isolate, "data")
-                       , v8::String::NewFromUtf8(isolate, json.constData(), v8::String::kNormalString, json.size())
-                       , v8::PropertyAttribute(v8::ReadOnly | v8::DontDelete));
+    v8::Maybe<bool> wasSet = messageObject->DefineOwnProperty(
+                context,
+                v8::String::NewFromUtf8(isolate, "data"),
+                v8::String::NewFromUtf8(isolate, json.constData(), v8::String::kNormalString, json.size()),
+                v8::PropertyAttribute(v8::ReadOnly | v8::DontDelete));
+    Q_ASSERT(!wasSet.IsNothing() && wasSet.FromJust());
 
     v8::Handle<v8::Function> callback = v8::Handle<v8::Function>::Cast(onmessageCallbackValue);
     const int argc = 1;