Skip to content

Commit 751d97f

Browse files
Merge pull request #426 from ryanseys/emit-error
Emit errors from upstream on file upload
2 parents 381e535 + 869a466 commit 751d97f

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

lib/storage/file.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1055,6 +1055,10 @@ File.prototype.startResumableUpload_ = function(stream, metadata) {
10551055
var writeStream = request(reqOpts);
10561056
writeStream.callback = util.noop;
10571057

1058+
writeStream.on('error', function(err) {
1059+
handleError(err);
1060+
});
1061+
10581062
writeStream.on('complete', function(res) {
10591063
util.handleResp(null, res, res.body, function(err, data) {
10601064
if (err) {
@@ -1123,7 +1127,6 @@ File.prototype.startResumableUpload_ = function(stream, metadata) {
11231127
}
11241128

11251129
stream.emit('error', err);
1126-
stream.end();
11271130
}
11281131
};
11291132

test/storage/file.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,44 @@ describe('File', function() {
528528
writable.write('data');
529529
});
530530

531+
it('should re-emit errors', function(done) {
532+
var error = new Error('Error.');
533+
var requestCount = 0;
534+
file.bucket.storage.makeAuthorizedRequest_ = function(reqOpts, cb) {
535+
requestCount++;
536+
537+
// respond to creation POST.
538+
if (requestCount === 1) {
539+
cb(null, null, { headers: { location: 'http://resume' }});
540+
return;
541+
}
542+
543+
// create an authorized request for the first PUT.
544+
if (requestCount === 2) {
545+
cb.onAuthorized(null, { headers: {} });
546+
}
547+
};
548+
549+
// respond to first upload PUT request.
550+
request_Override = function() {
551+
var stream = through();
552+
setImmediate(function() {
553+
stream.emit('error', error);
554+
});
555+
return stream;
556+
};
557+
558+
var stream = duplexify();
559+
560+
stream
561+
.on('error', function(err) {
562+
assert.equal(err, error);
563+
done();
564+
});
565+
566+
file.startResumableUpload_(stream);
567+
});
568+
531569
it('should start a simple upload if specified', function(done) {
532570
var writable = file.createWriteStream({
533571
metadata: METADATA,

0 commit comments

Comments
 (0)