diff --git a/packages/playwright-core/src/server/registry/oopDownloadBrowserMain.ts b/packages/playwright-core/src/server/registry/oopDownloadBrowserMain.ts index e205f2c4fc..247581277e 100644 --- a/packages/playwright-core/src/server/registry/oopDownloadBrowserMain.ts +++ b/packages/playwright-core/src/server/registry/oopDownloadBrowserMain.ts @@ -85,12 +85,15 @@ function downloadFile(options: DownloadParams): Promise { file.on('error', error => promise.reject(error)); response.pipe(file); response.on('data', onData); - response.on('close', () => { - if (response.complete) - return; + response.on('error', (error: any) => { file.close(); - log(`-- download failed, server closed connection`); - promise.reject(new Error(`Download failed: server closed connection. URL: ${options.url}`)); + if (error?.code === 'ECONNRESET') { + log(`-- download failed, server closed connection`); + promise.reject(new Error(`Download failed: server closed connection. URL: ${options.url}`)); + } else { + log(`-- download failed, unexpected error`); + promise.reject(new Error(`Download failed: ${error?.message ?? error}. URL: ${options.url}`)); + } }); }, (error: any) => promise.reject(error)); return promise;