使用节点请求传输图像但在非 200 http 状态代码上中止

Pipe image using node-request but abort on non-200 http status code

我正在尝试使用 node-request 传输存储在 Amazon S3 上的图像。但是,有时图像不存在,S3 将其作为状态代码 403 公开。我正在努力了解如何在成功(200)的情况下进行管道传输,但在非 200 的情况下采取替代措施.

使用 abort() 方法似乎是可行的方法,但得到了一个 r.abort is not a function,即使它应该在请求时可用。

// context: inside a request handler, where `res` is the response to write to
const r = request(url)
  .on('response', function (response) {
    if (response.statusCode !== 200) {
      r.abort(); //failing
      // I want to stop the piping here and do whatever instead.
    }
  })
  .pipe(res);

想法?

回答我自己的问题:在确定正确之前不要开始管道:

 request(url)
    .on('response', function (r) {
      if (r.statusCode !== 200) {
        //take other action
      }
      r.pipe(res);
    })