const launcher = require('chrome-launcher')
const CDP = require('chrome-remote-interface')

async function chromeLauncher () {
  const chrome = await launcher.launch({
    chromeFlags: ['--headless', '--disable-gpu']
  })
  const { port } = chrome

  return new Promise(resolve => {
    CDP(
      { port },
      async client => {
        const { Network, Page } = client
        await Promise.all([
          Network.enable(),
          Page.enable()
        ])

        resolve(client)
      }
    )
  })
}

module.exports = chromeLauncher

@@ -85,16 +85,35 @@
 face')%0A%0A
+let chrome = null%0A%0A
 async fu
@@ -123,35 +123,50 @@
 ion 
-c
+getC
 hrome
-Launcher () %7B%0A  const
+ () %7B%0A  if (chrome == null) %7B%0A   
  chr
@@ -195,16 +195,18 @@
 aunch(%7B%0A
+  
     chro
@@ -246,21 +246,116 @@
 e-gpu'%5D%0A
+  
   %7D)%0A
+  %7D%0A  return chrome%0A%7D%0A%0Aasync function chromeLauncher () %7B%0A  const chrome = await getChrome()%0A
   const 
@@ -394,23 +394,33 @@
 Promise(
+(
 resolve
+, reject)
  =%3E %7B%0A  
@@ -424,16 +424,20 @@
 %0A    CDP
+.New
 (%0A      
@@ -446,16 +446,190 @@
 port %7D,%0A
+      (err, target) =%3E %7B%0A        if (err) %7B%0A          reject(err)%0A        %7D else %7B%0A          CDP(%0A            %7B%0A              port,%0A              target%0A            %7D,%0A      
       as
@@ -640,24 +640,30 @@
 client =%3E %7B%0A
+      
         cons
@@ -699,16 +699,22 @@
         
+  
+    
 await Pr
@@ -735,16 +735,22 @@
         
+   
+   
 Network.
@@ -769,16 +769,22 @@
         
+   
+   
 Page.ena
@@ -801,20 +801,30 @@
     
-%5D)%0A%0A
+      %5D)%0A%0A    
         
 reso
@@ -819,16 +819,18 @@
         
+  
 resolve(
@@ -837,16 +837,52 @@
 client)%0A
+            %7D%0A          )%0A        %7D%0A
       %7D%0A

Use single chrome process