Skip to content

Commit 0bd6cac

Browse files
emit error events instead of throwing Error
Done for all operation that may be done asynchronously or in a nested way, in an EventEmitter context. The change allow to handle errors (by catching error events) while keeping the original behavior (throwing error) if error events are not listened
1 parent 61c9356 commit 0bd6cac

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

lib/http.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -360,19 +360,19 @@ OutgoingMessage.prototype._finish = function _finish() {
360360

361361
OutgoingMessage.prototype.setHeader = function setHeader(name, value) {
362362
if (this.headersSent) {
363-
throw new Error('Can\'t set headers after they are sent.');
363+
return this.emit('error', new Error('Can\'t set headers after they are sent.'));
364364
} else {
365365
name = name.toLowerCase();
366366
if (deprecatedHeaders.indexOf(name) !== -1) {
367-
throw new Error('Cannot set deprecated header: ' + name);
367+
return this.emit('error', new Error('Cannot set deprecated header: ' + name));
368368
}
369369
this._headers[name] = value;
370370
}
371371
};
372372

373373
OutgoingMessage.prototype.removeHeader = function removeHeader(name) {
374374
if (this.headersSent) {
375-
throw new Error('Can\'t remove headers after they are sent.');
375+
return this.emit('error', new Error('Can\'t remove headers after they are sent.'));
376376
} else {
377377
delete this._headers[name.toLowerCase()];
378378
}
@@ -891,7 +891,7 @@ Agent.prototype.request = function request(options, callback) {
891891

892892
if (!options.plain && options.protocol === 'http:') {
893893
this._log.error('Trying to negotiate client request with Upgrade from HTTP/1.1');
894-
throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported.');
894+
this.emit('error', new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported.'));
895895
}
896896

897897
var request = new OutgoingRequest(this._log);

lib/protocol/stream.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ Stream.prototype._transition = function transition(sending, frame) {
625625
// * When sending something invalid, throwing an exception, since it is probably a bug.
626626
if (sending) {
627627
this._log.error(info, 'Sending illegal frame.');
628-
throw new Error('Sending illegal frame (' + frame.type + ') in ' + this.state + ' state.');
628+
return this.emit('error', new Error('Sending illegal frame (' + frame.type + ') in ' + this.state + ' state.'));
629629
}
630630

631631
// * In case of a serious problem, emitting and error and letting someone else handle it

0 commit comments

Comments
 (0)