I think this clears up the logic a bit. Also, you shouldn't throw blank strings because they don't come with a lot of the important metadata that `Error` object contains.

```js
target = (iframeEl ? iframeEl.contentWindow :
          window.top !== window ? window.top :
          null);

if ( !target ) {
    throw new Error('Bridge: No iframe to communicate with');
}

targetOrigin = _targetOrigin;
localOrigin = window.location.origin;
window.addEventListener('message', onMessage, false);
ready = true;
```