Uncaught DOMException: Failed to execute 'postMessage' on 'Window': An object could not be cloned

It turns out the object I passed had methods, which is why the error message said An object could not be cloned.

In order to fix this, you can do the following:

obj = JSON.parse(JSON.stringify(obj));
parent.postMessage(obj, 'whatever');