title: How to avoid "The message port closed before a response was received" error when using await in the listener
body: <p>I am writing a chrome extension with node module "chrome-extension-async" and meeting a problem when use <code>await</code> in the listener of background.</p>
  
  <p>The content.js which will be injected into the page will send a message to the background, asking it to do some IO operations which is async:</p>
  
  <pre><code>// content.js
  const package = await chrome.runtime.sendMessage({param: ...})
  console.log(package)
  
  // background.js
  chrome.runtime.onMessage.addListener(async (request, sender, 
  sendResponse) =&gt; {
      const value  = await doIOOperation();
      sendResponse(value);
  })
  </code></pre>
  
  <p>However, chrome will report errors like below:</p>
  
  <blockquote>
    <p>Uncaught (in promise) Error: The message port closed before a response was received.</p>
  </blockquote>
  
  <p>I think there must be some conflict when using async/await in the listener, Anyone know how to solve this problem?</p>