From 2f657f31e5803514a02803bf0ed01e72bedad0dd Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Wed, 13 Feb 2019 16:05:51 -0800 Subject: [PATCH] 1. Updated 'addMethod' on emitter, to return this, so you can chain multiple together 2. Updated wget return value to expose an 'abort' event --- microscript/ILibDuktape_Polyfills.c | 2 +- microscript/ILibduktape_EventEmitter.c | 4 +++- modules/wget.js | 10 +++++----- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 633531f..6e1c474 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -1875,7 +1875,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) #endif // wget: Refer to modules/wget.js for a human readable version. - duk_peval_string_noresult(ctx, "addModule('wget', Buffer.from('LyoKQ29weXJpZ2h0IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKi8NCg0KDQp2YXIgcHJvbWlzZSA9IHJlcXVpcmUoJ3Byb21pc2UnKTsNCnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpOw0KdmFyIHdyaXRhYmxlID0gcmVxdWlyZSgnc3RyZWFtJykuV3JpdGFibGU7DQoNCg0KZnVuY3Rpb24gd2dldChyZW1vdGVVcmksIGxvY2FsRmlsZVBhdGgpDQp7DQogICAgdmFyIHJldCA9IG5ldyBwcm9taXNlKGZ1bmN0aW9uIChyZXMsIHJlaikgeyB0aGlzLl9yZXMgPSByZXM7IHRoaXMuX3JlaiA9IHJlajsgfSk7DQogICAgdmFyIGFnZW50Q29ubmVjdGVkID0gZmFsc2U7DQogICAgcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyLmNhbGwocmV0LCB0cnVlKS5jcmVhdGVFdmVudCgnYnl0ZXMnKTsNCg0KICAgIHRyeQ0KICAgIHsNCiAgICAgICAgYWdlbnRDb25uZWN0ZWQgPSByZXF1aXJlKCdNZXNoQWdlbnQnKS5pc0NvbnRyb2xDaGFubmVsQ29ubmVjdGVkOw0KICAgIH0NCiAgICBjYXRjaCAoZSkNCiAgICB7DQogICAgfQ0KDQogICAgLy8gV2Ugb25seSBuZWVkIHRvIGNoZWNrIHByb3h5IHNldHRpbmdzIGlmIHRoZSBhZ2VudCBpcyBub3QgY29ubmVjdGVkLCBiZWNhdXNlIHdoZW4gdGhlIGFnZW50DQogICAgLy8gY29ubmVjdHMsIGl0IGF1dG9tYXRpY2FsbHkgY29uZmlndXJlcyB0aGUgcHJveHkgZm9yIEphdmFTY3JpcHQuDQogICAgaWYgKCFhZ2VudENvbm5lY3RlZCkNCiAgICB7DQogICAgICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09ICd3aW4zMicpDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciByZWcgPSByZXF1aXJlKCd3aW4tcmVnaXN0cnknKTsNCiAgICAgICAgICAgIGlmIChyZWcuUXVlcnlLZXkocmVnLkhLRVkuQ3VycmVudFVzZXIsICdTb2Z0d2FyZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcSW50ZXJuZXQgU2V0dGluZ3MnLCAnUHJveHlFbmFibGUnKSA9PSAxKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBwcm94eVVyaSA9IHJlZy5RdWVyeUtleShyZWcuSEtFWS5DdXJyZW50VXNlciwgJ1NvZnR3YXJlXFxNaWNyb3NvZnRcXFdpbmRvd3NcXEN1cnJlbnRWZXJzaW9uXFxJbnRlcm5ldCBTZXR0aW5ncycsICdQcm94eVNlcnZlcicpOw0KICAgICAgICAgICAgICAgIHZhciBvcHRpb25zID0gcmVxdWlyZSgnaHR0cCcpLnBhcnNlVXJpKCdodHRwOi8vJyArIHByb3h5VXJpKTsNCg0KICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwcm94eSA9PiAnICsgcHJveHlVcmkpOw0KICAgICAgICAgICAgICAgIHJlcXVpcmUoJ2dsb2JhbC10dW5uZWwnKS5pbml0aWFsaXplKG9wdGlvbnMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0Ll90b3RhbEJ5dGVzID0gMDsNCiAgICByZXQuYWJvcnQgPSBmdW5jdGlvbigpDQogICAgew0KICAgICAgICB0aGlzLl9yZXF1ZXN0LmFib3J0KCk7DQogICAgfQ0KICAgIHJldC5fcmVxdWVzdCA9IGh0dHAuZ2V0KHJlbW90ZVVyaSk7DQogICAgcmV0Ll9sb2NhbEZpbGVQYXRoID0gbG9jYWxGaWxlUGF0aDsNCiAgICByZXQuX3JlcXVlc3QucHJvbWlzZSA9IHJldDsNCiAgICByZXQuX3JlcXVlc3Qub24oJ2Vycm9yJywgZnVuY3Rpb24gKGUpIHsgdGhpcy5wcm9taXNlLl9yZWooZSk7IH0pOw0KICAgIHJldC5fcmVxdWVzdC5vbigncmVzcG9uc2UnLCBmdW5jdGlvbiAoaW1zZykNCiAgICB7DQogICAgICAgIGlmKGltc2cuc3RhdHVzQ29kZSAhPSAyMDApDQogICAgICAgIHsNCiAgICAgICAgICAgIHRoaXMucHJvbWlzZS5fcmVqKCdTZXJ2ZXIgcmVzcG9uc2VkIHdpdGggU3RhdHVzIENvZGU6ICcgKyBpbXNnLnN0YXR1c0NvZGUpOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgdHJ5DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhpcy5fZmlsZSA9IHJlcXVpcmUoJ2ZzJykuY3JlYXRlV3JpdGVTdHJlYW0odGhpcy5wcm9taXNlLl9sb2NhbEZpbGVQYXRoLCB7IGZsYWdzOiAnd2InIH0pOw0KICAgICAgICAgICAgICAgIHRoaXMuX3NoYSA9IHJlcXVpcmUoJ1NIQTM4NFN0cmVhbScpLmNyZWF0ZSgpOw0KICAgICAgICAgICAgICAgIHRoaXMuX3NoYS5wcm9taXNlID0gdGhpcy5wcm9taXNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY2F0Y2goZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aGlzLnByb21pc2UuX3JlaihlKTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgICAgICB0aGlzLl9zaGEub24oJ2hhc2gnLCBmdW5jdGlvbiAoaCkgeyB0aGlzLnByb21pc2UuX3JlcyhoLnRvU3RyaW5nKCdoZXgnKSk7IH0pOw0KICAgICAgICAgICAgdGhpcy5fYWNjdW11bGF0b3IgPSBuZXcgd3JpdGFibGUoDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oY2h1bmssIGNhbGxiYWNrKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb21pc2UuX3RvdGFsQnl0ZXMgKz0gY2h1bmsubGVuZ3RoOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9taXNlLmVtaXQoJ2J5dGVzJywgdGhpcy5wcm9taXNlLl90b3RhbEJ5dGVzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgIGZpbmFsOiBmdW5jdGlvbihjYWxsYmFjaykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgdGhpcy5fYWNjdW11bGF0b3IucHJvbWlzZSA9IHRoaXMucHJvbWlzZTsNCiAgICAgICAgICAgIGltc2cucGlwZSh0aGlzLl9maWxlKTsNCiAgICAgICAgICAgIGltc2cucGlwZSh0aGlzLl9hY2N1bXVsYXRvcik7DQogICAgICAgICAgICBpbXNnLnBpcGUodGhpcy5fc2hhKTsNCiAgICAgICAgfQ0KICAgIH0pOw0KICAgIHJldC5wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0aGlzLl90b3RhbEJ5dGVzKTsgfTsNCiAgICByZXR1cm4gKHJldCk7DQp9DQoNCm1vZHVsZS5leHBvcnRzID0gd2dldDsNCg0KDQo=', 'base64').toString());"); + duk_peval_string_noresult(ctx, "addModule('wget', Buffer.from('LyoKQ29weXJpZ2h0IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKi8NCg0KDQp2YXIgcHJvbWlzZSA9IHJlcXVpcmUoJ3Byb21pc2UnKTsNCnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpOw0KdmFyIHdyaXRhYmxlID0gcmVxdWlyZSgnc3RyZWFtJykuV3JpdGFibGU7DQoNCg0KZnVuY3Rpb24gd2dldChyZW1vdGVVcmksIGxvY2FsRmlsZVBhdGgpDQp7DQogICAgdmFyIHJldCA9IG5ldyBwcm9taXNlKGZ1bmN0aW9uIChyZXMsIHJlaikgeyB0aGlzLl9yZXMgPSByZXM7IHRoaXMuX3JlaiA9IHJlajsgfSk7DQogICAgdmFyIGFnZW50Q29ubmVjdGVkID0gZmFsc2U7DQogICAgcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyLmNhbGwocmV0LCB0cnVlKQ0KICAgICAgICAuY3JlYXRlRXZlbnQoJ2J5dGVzJykNCiAgICAgICAgLmNyZWF0ZUV2ZW50KCdhYm9ydCcpDQogICAgICAgIC5hZGRNZXRob2QoJ2Fib3J0JywgZnVuY3Rpb24gKCkgeyB0aGlzLl9yZXF1ZXN0LmFib3J0KCk7IH0pOw0KDQogICAgdHJ5DQogICAgew0KICAgICAgICBhZ2VudENvbm5lY3RlZCA9IHJlcXVpcmUoJ01lc2hBZ2VudCcpLmlzQ29udHJvbENoYW5uZWxDb25uZWN0ZWQ7DQogICAgfQ0KICAgIGNhdGNoIChlKQ0KICAgIHsNCiAgICB9DQoNCiAgICAvLyBXZSBvbmx5IG5lZWQgdG8gY2hlY2sgcHJveHkgc2V0dGluZ3MgaWYgdGhlIGFnZW50IGlzIG5vdCBjb25uZWN0ZWQsIGJlY2F1c2Ugd2hlbiB0aGUgYWdlbnQNCiAgICAvLyBjb25uZWN0cywgaXQgYXV0b21hdGljYWxseSBjb25maWd1cmVzIHRoZSBwcm94eSBmb3IgSmF2YVNjcmlwdC4NCiAgICBpZiAoIWFnZW50Q29ubmVjdGVkKQ0KICAgIHsNCiAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJykNCiAgICAgICAgew0KICAgICAgICAgICAgdmFyIHJlZyA9IHJlcXVpcmUoJ3dpbi1yZWdpc3RyeScpOw0KICAgICAgICAgICAgaWYgKHJlZy5RdWVyeUtleShyZWcuSEtFWS5DdXJyZW50VXNlciwgJ1NvZnR3YXJlXFxNaWNyb3NvZnRcXFdpbmRvd3NcXEN1cnJlbnRWZXJzaW9uXFxJbnRlcm5ldCBTZXR0aW5ncycsICdQcm94eUVuYWJsZScpID09IDEpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIHByb3h5VXJpID0gcmVnLlF1ZXJ5S2V5KHJlZy5IS0VZLkN1cnJlbnRVc2VyLCAnU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXEludGVybmV0IFNldHRpbmdzJywgJ1Byb3h5U2VydmVyJyk7DQogICAgICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSByZXF1aXJlKCdodHRwJykucGFyc2VVcmkoJ2h0dHA6Ly8nICsgcHJveHlVcmkpOw0KDQogICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Byb3h5ID0+ICcgKyBwcm94eVVyaSk7DQogICAgICAgICAgICAgICAgcmVxdWlyZSgnZ2xvYmFsLXR1bm5lbCcpLmluaXRpYWxpemUob3B0aW9ucyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICByZXQuX3RvdGFsQnl0ZXMgPSAwOw0KICAgIHJldC5fcmVxdWVzdCA9IGh0dHAuZ2V0KHJlbW90ZVVyaSk7DQogICAgcmV0Ll9sb2NhbEZpbGVQYXRoID0gbG9jYWxGaWxlUGF0aDsNCiAgICByZXQuX3JlcXVlc3QucHJvbWlzZSA9IHJldDsNCiAgICByZXQuX3JlcXVlc3Qub24oJ2Vycm9yJywgZnVuY3Rpb24gKGUpIHsgdGhpcy5wcm9taXNlLl9yZWooZSk7IH0pOw0KICAgIHJldC5fcmVxdWVzdC5vbignYWJvcnQnLCBmdW5jdGlvbiAoKSB7IHRoaXMucHJvbWlzZS5lbWl0KCdhYm9ydCcpOyB9KTsNCiAgICByZXQuX3JlcXVlc3Qub24oJ3Jlc3BvbnNlJywgZnVuY3Rpb24gKGltc2cpDQogICAgew0KICAgICAgICBpZihpbXNnLnN0YXR1c0NvZGUgIT0gMjAwKQ0KICAgICAgICB7DQogICAgICAgICAgICB0aGlzLnByb21pc2UuX3JlaignU2VydmVyIHJlc3BvbnNlZCB3aXRoIFN0YXR1cyBDb2RlOiAnICsgaW1zZy5zdGF0dXNDb2RlKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIHRyeQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGUgPSByZXF1aXJlKCdmcycpLmNyZWF0ZVdyaXRlU3RyZWFtKHRoaXMucHJvbWlzZS5fbG9jYWxGaWxlUGF0aCwgeyBmbGFnczogJ3diJyB9KTsNCiAgICAgICAgICAgICAgICB0aGlzLl9zaGEgPSByZXF1aXJlKCdTSEEzODRTdHJlYW0nKS5jcmVhdGUoKTsNCiAgICAgICAgICAgICAgICB0aGlzLl9zaGEucHJvbWlzZSA9IHRoaXMucHJvbWlzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNhdGNoKGUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhpcy5wcm9taXNlLl9yZWooZSk7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdGhpcy5fc2hhLm9uKCdoYXNoJywgZnVuY3Rpb24gKGgpIHsgdGhpcy5wcm9taXNlLl9yZXMoaC50b1N0cmluZygnaGV4JykpOyB9KTsNCiAgICAgICAgICAgIHRoaXMuX2FjY3VtdWxhdG9yID0gbmV3IHdyaXRhYmxlKA0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5rLCBjYWxsYmFjaykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9taXNlLl90b3RhbEJ5dGVzICs9IGNodW5rLmxlbmd0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvbWlzZS5lbWl0KCdieXRlcycsIHRoaXMucHJvbWlzZS5fdG90YWxCeXRlcyk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHRydWUpOw0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICBmaW5hbDogZnVuY3Rpb24oY2FsbGJhY2spDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIHRoaXMuX2FjY3VtdWxhdG9yLnByb21pc2UgPSB0aGlzLnByb21pc2U7DQogICAgICAgICAgICBpbXNnLnBpcGUodGhpcy5fZmlsZSk7DQogICAgICAgICAgICBpbXNnLnBpcGUodGhpcy5fYWNjdW11bGF0b3IpOw0KICAgICAgICAgICAgaW1zZy5waXBlKHRoaXMuX3NoYSk7DQogICAgICAgIH0NCiAgICB9KTsNCiAgICByZXQucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAodGhpcy5fdG90YWxCeXRlcyk7IH07DQogICAgcmV0dXJuIChyZXQpOw0KfQ0KDQptb2R1bGUuZXhwb3J0cyA9IHdnZXQ7DQoNCg0K', 'base64').toString());"); duk_peval_string_noresult(ctx, "Object.defineProperty(this, 'wget', {value: require('wget')});"); } diff --git a/microscript/ILibduktape_EventEmitter.c b/microscript/ILibduktape_EventEmitter.c index 39299af..549b379 100644 --- a/microscript/ILibduktape_EventEmitter.c +++ b/microscript/ILibduktape_EventEmitter.c @@ -752,7 +752,9 @@ duk_ret_t ILibDuktape_EventEmitter_Inherits_addMethod(duk_context *ctx) duk_push_heapptr(ctx, emitter->object); // [emitterUtils][ptr][target] ILibDuktape_CreateProperty_InstanceMethodEx(ctx, (char*)duk_require_string(ctx, 0), duk_require_heapptr(ctx, 1)); - return(0); + + duk_push_this(ctx); + return(1); } duk_ret_t ILibDuktape_EventEmitter_EmitterUtils_Finalizer(duk_context *ctx) { diff --git a/modules/wget.js b/modules/wget.js index d96f188..0cb5d9d 100644 --- a/modules/wget.js +++ b/modules/wget.js @@ -24,7 +24,10 @@ function wget(remoteUri, localFilePath) { var ret = new promise(function (res, rej) { this._res = res; this._rej = rej; }); var agentConnected = false; - require('events').EventEmitter.call(ret, true).createEvent('bytes'); + require('events').EventEmitter.call(ret, true) + .createEvent('bytes') + .createEvent('abort') + .addMethod('abort', function () { this._request.abort(); }); try { @@ -53,14 +56,11 @@ function wget(remoteUri, localFilePath) } ret._totalBytes = 0; - ret.abort = function() - { - this._request.abort(); - } ret._request = http.get(remoteUri); ret._localFilePath = localFilePath; ret._request.promise = ret; ret._request.on('error', function (e) { this.promise._rej(e); }); + ret._request.on('abort', function () { this.promise.emit('abort'); }); ret._request.on('response', function (imsg) { if(imsg.statusCode != 200)