如何绑定事件处理程序以请求承诺在资源太大时关闭套接字?

how to bind an event handler to request promise to close a socket when resource is too big?

使用request-promise 我想知道如何在资源超过2000 位时提前关闭套接字。从 .on('data', callback) 事件处理程序我想关闭套接字并跳转到 then() 中的代码。我已经尝试过 this.abort() 但它没有用。现在,事件句柄工作并获取位数,但我可以在位大小触发 if 条件时关闭事件的套接字。

var request = require('request');
var rp = require('request-promise-native');

var size = 0;
const MAX_SIZE = 2000;

rp
.get('https://sitecozy.com/screenshot.png')
.on('data',(ok)=>
{console.log(size)
size += ok.length;

    if (size > MAX_SIZE) {
        console.log("Aborting this request as it exceeds max size")
    // I wish to close the socket and trigger then() from here.
    }

}

)
.then(function (htmlString) {
   console.log("good")
})
.catch(function (err) {
   console.log("bad") 
});;

我已经成功地使用标准请求包并将其包装在一个承诺中。我希望使用请求承诺,因为我的代码中已经有很多嵌套块:

const request = require('request');

var size =0;
var maxLength = 8175;

new Promise ((resolve,reject)=>{
var jo = request("https://upload.wikimedia.org/wikipedia/commons/9/9b/Sternwarte_Darmstadt_HDR_Panorama_10MB_-_Photographed_by_James_Breitenstein.jpg")

.on('response',(ok)=>{
jo.responseHeaders = ok.headers;})

.on('data',(ok)=>{
size+=ok.length;
if (size > maxLength){
console.log("DATA",size);resolve(jo.response);jo.abort();}})

.on('end',function(ok){console.log("END");})})

.then(function (ok) {
    console.log("ok then",ok)
})
.catch(function (err) {
  console.log("error",err)

});