Implementing File Download using Effect

How can I implement the following code using Effect? It uses node http and WriteStream to read a request and produce a file (source: https://github.com/SandroMaglione/jisho-open/blob/01d7c4e8bb3161d42ebe9f9ba6ccdc713ad3dfb5/backend/src/importing/file.ts#L33-L50)

import * as fs from "fs";
import * as http from "http";

await new Promise<void>((resolve, reject) => {
  const writeStream = fs.createWriteStream(toFilename);

  const request = http.get(url, (response) => {
    response.pipe(writeStream);
    writeStream.on("finish", () => {
      writeStream.close(() => resolve());
    });
  });

  request.on("error", async (err) => {
    fs.unlinkSync(downloadFolder + toFilename);
    await logger.writeLn(`error downloading ${toFilename}`);
    reject(err.message);
  });
});
Was this page helpful?