By injecting `console` here, we are only exposing console when the content script is evaluated. e.g. when we call Worker constructor,
when we call `Symbiont._onInit` from here:
https://github.com/ZER0/addon-sdk/blob/d729172a57ef8974fc27d9d1ca73973543c9d7a6/lib/sdk/content/symbiont.js#L129-L168
We will call it more or less early depending on `contentScriptWhen` value.

It basically means that if the developer doesn't specify `contentScriptWhen: 'start'`, calls to `console.*` made before `load` and/or DOMContentLoaded event are going to fail.

It think that the best place for this code would be to live in symbiont. It would avoid the check to `!getTabForContentWindow(window)`, as we want to inject console for all symbiont usages.
Having said that, your patch works and is already better than the current state, so we can improve that in a followup if you prefer.