title: browser.tabs.sendMessage(): Error: Receiving end does not exist
body: <p>I trying to run example code given on the <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/sendMessage" rel="nofollow noreferrer"><code>tabs.sendMessage()</code> MDN page</a>. So my code is:</p>
  
  <p><em>manifest.json</em>:</p>
  
  <pre class="lang-json prettyprint-override"><code>{
      "manifest_version": 2,
      "name": "test1",
      "version": "1.0",
      "description": "test",
      "icons": {
          "48": "icons/Ruler48.png"
      },
      "permissions": [
          "notifications",
          "tabs",
          "activeTab"
      ],
      "browser_action": {
          "default_icon": "icons/Ruler48.png",
          "default_title": "test"
      },
      "content_scripts": [{
          "matches": ["*://*/"],
          "js": ["content-script.js"]
      }],
      "background": {
          "scripts": ["bgS.js"]
      }
  }
  </code></pre>
  
  <p><em>bgS.js:</em></p>
  
  <pre class="lang-js prettyprint-override"><code>function onError(error) {
    console.error(`Error: ${error}`);
  }
  
  function sendMessageToTabs(tabs) {
    for (let tab of tabs) {
      console.log(tab.id);
      browser.tabs.sendMessage(
        tab.id,
        {greeting: "Hi from background script"}
      ).then(response =&gt; {
        console.log("Message from the content script:");
        console.log(response.response);
      }).catch(onError);
    }
  }
  
  browser.browserAction.onClicked.addListener(() =&gt; {
    browser.tabs.query({
      currentWindow: true,
      active: true
    }).then(sendMessageToTabs).catch(onError);
  });
  </code></pre>
  
  <p><em>content-script.js</em>:
  </p>
  
  <pre><code>browser.runtime.onMessage.addListener(request =&gt; {
    console.log("Message from the background script:");
    console.log(request.greeting);
    return Promise.resolve({response: "Hi from content script"});
  });
  </code></pre>
  
  <p>I run it with web-ext run, after clicking on browser action button, in the console I get this message: <code>Error: Error: Could not establish connection. Receiving end does not exist.</code></p>
  
  <p>The output from <code>web-ext run --verbose</code></p>
  
  <pre class="lang-none prettyprint-override"><code> web-ext run --verbose
  [program.js][debug] Getting the version from package.json
  [program.js][info] Version: 1.8.0
  [program.js][debug] Getting the version from package.json
  [cmd/run.js][info] Running web extension from C:\test
  [util/manifest.js][debug] Validating manifest at C:\test\manifest.json
  [cmd/run.js][debug] Creating new Firefox profile
  [cmd/run.js][debug] Deferring extension installation until after connecting to the remote debugger    
  [firefox/index.js][debug] Checking if remote Firefox port 6005 is available
  [firefox/remote.js][debug] Connecting to Firefox on port 6005
  [firefox/index.js][debug] Executing Firefox binary: C:\Program Files\Mozilla Firefox\firefox.exe    
  [firefox/index.js][info] Use --verbose or open Tools &gt; Web Developer &gt; Browser Console to see logging
  [cmd/run.js][debug] Connecting to the remote Firefox debugger
  [firefox/remote.js][debug] Connecting to Firefox on port 6005
  [cmd/run.js][debug] Retrying Firefox (0); connection error: Error: connect ECONNREFUSED 127.0.0.1:6005
  [firefox/remote.js][debug] Connecting to Firefox on port 6005
  [cmd/run.js][debug] Retrying Firefox (1); connection error: Error: connect ECONNREFUSED 127.0.0.1:6005
  [firefox/remote.js][debug] Connecting to Firefox on port 6005
  [cmd/run.js][debug] Retrying Firefox (2); connection error: Error: connect ECONNREFUSED 127.0.0.1:6005
  [firefox/remote.js][debug] Connecting to Firefox on port 6005
  [firefox/index.js][debug] Firefox stdout: Started debugger server on 6005
  [cmd/run.js][debug] Retrying Firefox (3); connection error: Error: connect ECONNREFUSED 127.0.0.1:6005
  [firefox/remote.js][debug] Connecting to Firefox on port 6005
  [firefox/remote.js][debug] Connected to the remote Firefox debugger
  [firefox/index.js][debug] Firefox stderr: JavaScript strict warning: resource://gre/modules/commonjs/toolkit/loader.js -&gt; resource://devtools/shared/security/socket.js, line 778: ReferenceError: reference to undefined property this._handshakeTimeout
  [firefox/index.js][debug] Firefox stderr: JavaScript strict warning: chrome://browser/content/browser.js, line 6573: SyntaxError: applying the 'delete' operator to an unqualified name is deprecated
  [firefox/remote.js][debug] installTemporaryAddon: {"addon":{"id":"d71da5f6ee8174302deb5edfa887679913cd71ed@temporary-addon","actor":false},"from":"server1.conn0.addonsActor3"}
  [firefox/remote.js][info] Installed C:\test as a temporary add-on
  [cmd/run.js][info] The extension will reload if any source file changes
  [util/file-filter.js][debug] Resolved path **/*.xpi with sourceDir C:\test to C:\test\**\*.xpi
  [util/file-filter.js][debug] Resolved path **/*.zip with sourceDir C:\test to C:\test\**\*.zip
  [util/file-filter.js][debug] Resolved path **/.* with sourceDir C:\test to C:\test\**\.*
  [util/file-filter.js][debug] Resolved path **/.*/**/* with sourceDir C:\test to C:\test\**\.*\**\*
  [util/file-filter.js][debug] Resolved path **/node_modules with sourceDir C:\test to C:\test\**\node_modules
  [util/file-filter.js][debug] Resolved path **/node_modules/**/* with sourceDir C:\test to C:\test\**\node_modules\**\*
  [util/file-filter.js][debug] Resolved path C:\test\web-ext-artifacts with sourceDir C:\test to C:\test\web-ext-artifacts
  [util/file-filter.js][debug] Resolved path C:\test\web-ext-artifacts\**\* with sourceDir C:\test to C:\test\web-ext-artifacts\**\*
  [watcher.js][debug] Watching for file changes in C:\test
  [firefox/index.js][debug] Firefox stderr: JavaScript strict warning: chrome://browser/content/tabbrowser.xml, line 640: ReferenceError: reference to undefined property this.mBrowser.initialPageLoadedFromURLBar
  [firefox/index.js][debug] Firefox stdout: 1486682957594 addons.webextension.d71da5f6ee8174302deb5edfa887679913cd71ed@temporary-addon    WARN    Please specify whether you want browser_style or not in your browser_action options.
  [firefox/index.js][debug] Firefox stderr: JavaScript strict warning: chrome://global/content/bindings/browser.xml, line 385: ReferenceError: reference to undefined property tabBrowser.localName
  [firefox/index.js][debug] Firefox stderr: JavaScript strict warning: resource://gre/modules/commonjs/toolkit/loader.js -&gt; resource://devtools/shared/node-properties/node-properties.js, line 134: ReferenceError: reference to undefined property control.resume
  [firefox/index.js][debug] Firefox stderr: JavaScript strict warning: resource://gre/modules/commonjs/toolkit/loader.js -&gt; resource://devtools/shared/node-properties/node-properties.js, line 124: ReferenceError: reference to undefined property options._comments[c]
  [firefox/index.js][debug] Firefox stderr: JavaScript strict warning: resource://gre/modules/commonjs/toolkit/loader.js -&gt; resource://devtools/shared/node-properties/node-properties.js, line 130: ReferenceError: reference to undefined property options._separators[c]
  [firefox/index.js][debug] Firefox stderr: JavaScript strict warning: resource://gre/modules/commonjs/toolkit/loader.js -&gt; resource://gre/modules/commonjs/sdk/system/unload.js, line 31: ReferenceError: reference to undefined property observers[i].value
  [firefox/index.js][debug] Firefox stderr: JavaScript strict warning: resource://gre/modules/ProfileAge.jsm, line 202: ReferenceError: reference to undefined property times.reset
  [firefox/index.js][debug] Firefox stderr: JavaScript strict warning: resource://gre/modules/LoginStore.jsm, line 275: ReferenceError: reference to undefined property this.data.version
  [firefox/index.js][debug] Firefox stderr: JavaScript strict warning: chrome://global/content/bindings/browser.xml, line 385: ReferenceError: reference to undefined property tabBrowser.localName
  </code></pre>
  
  <p>This, what in browser console, the first message appear before I install it. I mean it was there before installation, so it installs silently. After clicking on button I got last two messages, the first one gives <code>tab.id</code> from this line <code>console.log(tab.id)</code> and then error:</p>
  
  <pre class="lang-none prettyprint-override"><code>1486683758937   addons.webextension.16f1634b55daa52a653f3a2ba33358a691bb015a@temporary-addon    WARN    Please specify whether you want browser_style or not in your browser_action options.
  10  bgS.js:8:3
  Error: Error: Could not establish connection. Receiving end does not exist.  bgS.js:3:3
  </code></pre>