Skip to content

Commit 973d61c

Browse files
committed
fix: handle stream errors in dbt file download
1 parent 655ab05 commit 973d61c

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

src/services/dbtIntegrationClient.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,27 @@ export class DbtIntegrationClient {
7676
if (!response.ok) {
7777
throw new Error(`Failed to download file: ${response.statusText}`);
7878
}
79+
80+
if (!response.body) {
81+
throw new Error(`Failed to download file: response body is null`);
82+
}
83+
7984
const fileStream = createWriteStream(destinationPath);
8085
await new Promise((resolve, reject) => {
81-
response.body?.pipe(fileStream);
82-
response.body?.on("error", reject);
86+
// Listen for errors on both streams
87+
response.body!.on("error", (error) => {
88+
fileStream.destroy();
89+
reject(new Error(`Response stream error: ${error.message}`));
90+
});
91+
92+
fileStream.on("error", (error) => {
93+
reject(new Error(`File stream error: ${error.message}`));
94+
});
95+
8396
fileStream.on("finish", resolve);
97+
98+
// Start piping after all event listeners are set up
99+
response.body!.pipe(fileStream);
84100
});
85101

86102
this.dbtTerminal.debug("File downloaded successfully!", fileName);

0 commit comments

Comments
 (0)