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.
29 lines
612 B
29 lines
612 B
5 years ago
|
|
||
|
module.exports = function () {
|
||
|
var read, reader, cb, abort, stream
|
||
|
|
||
|
function delayed (_read) {
|
||
|
//if we already have the stream, go!
|
||
|
if(stream) return stream(_read)
|
||
|
|
||
|
read = _read
|
||
|
return function (_abort, _cb) {
|
||
|
if(reader) reader(_abort, _cb)
|
||
|
else abort = _abort, cb = _cb
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
delayed.resolve = function (_stream) {
|
||
|
if(stream) throw new Error('already resolved')
|
||
|
stream = _stream
|
||
|
if(!stream) throw new Error('resolve *must* be passed a transform stream')
|
||
|
if(read) {
|
||
|
reader = stream(read)
|
||
|
if(cb) reader(abort, cb)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return delayed
|
||
|
}
|