Skip to content

Commit

Permalink
fix(browser-runner): reject promise on error (#7338)
Browse files Browse the repository at this point in the history
This patch adds a reject callback to the _processClosing promise and executes it if it catches an error on removeFolderAsync(...).

Co-authored-by: Mathias Bynens <mathias@qiwi.be>
  • Loading branch information
andresrondon and mathiasbynens committed Jul 30, 2021
1 parent 39c1f08 commit 5eb20e2
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
2 changes: 2 additions & 0 deletions docs/api.md
Expand Up @@ -882,6 +882,8 @@ a single instance of [BrowserContext].

Closes Chromium and all of its pages (if any were opened). The [Browser] object itself is considered to be disposed and cannot be used anymore.

During the process of closing the browser, Puppeteer attempts to delete the temp folder created exclusively for this browser instance. If this fails (either because a file in the temp folder is locked by another process or because of insufficient permissions) an error is logged. This implies that: a) the folder and/or its content is not fully deleted; and b) the connection with the browser is not properly disposed (see [browser.disconnect()](#browserdisconnect)).

#### browser.createIncognitoBrowserContext()

- returns: <[Promise]<[BrowserContext]>>
Expand Down
7 changes: 5 additions & 2 deletions src/node/BrowserRunner.ts
Expand Up @@ -91,14 +91,17 @@ export class BrowserRunner {
this.proc.stdout.pipe(process.stdout);
}
this._closed = false;
this._processClosing = new Promise((fulfill) => {
this._processClosing = new Promise((fulfill, reject) => {
this.proc.once('exit', () => {
this._closed = true;
// Cleanup as processes exit.
if (this._tempDirectory) {
removeFolderAsync(this._tempDirectory)
.then(() => fulfill())
.catch((error) => console.error(error));
.catch((error) => {
console.error(error);
reject(error);
});
} else {
fulfill();
}
Expand Down

0 comments on commit 5eb20e2

Please sign in to comment.