You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.3 KiB
77 lines
1.3 KiB
var pull = require('..') |
|
|
|
var tape = require('tape') |
|
|
|
tape('abort on drain', function (t) { |
|
|
|
var c = 100 |
|
var drain = pull.drain(function () { |
|
if(c < 0) throw new Error('stream should have aborted') |
|
if(!--c) return false //drain.abort() |
|
}, function () { |
|
t.end() |
|
}) |
|
|
|
pull(pull.infinite(), drain) |
|
|
|
}) |
|
|
|
|
|
function delay () { |
|
return pull.asyncMap(function (e, cb) { |
|
setTimeout(function () { cb(null, e) }) |
|
}) |
|
} |
|
|
|
tape('abort on drain - async', function (t) { |
|
|
|
var c = 100 |
|
var drain = pull.drain(function () { |
|
if(c < 0) throw new Error('stream should have aborted') |
|
if(!--c) return drain.abort() |
|
}, function () { |
|
t.end() |
|
}) |
|
|
|
pull(pull.infinite(), delay(), drain) |
|
|
|
}) |
|
|
|
tape('abort on drain - sync', function (t) { |
|
|
|
var c = 100 |
|
var drain = pull.drain(function () { |
|
if(c < 0) throw new Error('stream should have aborted') |
|
if(!--c) return drain.abort() |
|
}, function () { |
|
t.end() |
|
}) |
|
|
|
pull(pull.infinite(), drain) |
|
|
|
}) |
|
|
|
|
|
tape('abort on drain - async, out of cb', function (t) { |
|
|
|
var c = 0, ERR = new Error('test ABORT') |
|
var drain = pull.drain(function () { |
|
--c |
|
}, function (err) { |
|
t.ok(c < 0) |
|
t.equal(err, ERR) |
|
t.end() |
|
}) |
|
|
|
pull(pull.infinite(), delay(), drain) |
|
|
|
setTimeout(function () { |
|
drain.abort(ERR) |
|
}, 100) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|