!7 cm PlaywrightModule > DynPrintLogAndEnabled { transient autoDispose new Borrowable sharedBrowser; start-thread { time "Chromium preloaded" { sharedBrowser.set(playwrightWithChromium()); } } // borrow or create temporarily PlaywrightAndBrowser acquireBrowser(IResourceHolder res) { var borrowedBrowser = res.add(sharedBrowser.tempBorrow()); var browser = borrowedBrowser!; if (browser == null) browser = res.add(tempPlaywrightWithChromium()); else print("Using borrowed browser"); ret browser; } // API WithURL youTubeSearch(S query) { try { printFunctionCall youTubeSearch(query); temp res = resourceHolder(); var browser = acquireBrowser(res); ret print(result := main youTubeSearch(browser!, query)); } on fail e { printStackTrace(e); } } WithURL googleSearch(S query) { try { printFunctionCall googleSearch(query); temp res = resourceHolder(); var browser = acquireBrowser(res); ret print(result := main googleSearch(browser!, query)); } on fail e { printStackTrace(e); } } }