mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-27 15:45:48 +00:00
throw error if Request.request called more than once
This commit is contained in:
@@ -43,16 +43,19 @@ Request.prototype.request = function(servers, callback_) {
|
|||||||
const self = this;
|
const self = this;
|
||||||
const callback = typeof servers === 'function' ? servers : callback_;
|
const callback = typeof servers === 'function' ? servers : callback_;
|
||||||
|
|
||||||
|
if (this.requested) {
|
||||||
|
throw new Error('Already requested');
|
||||||
|
}
|
||||||
|
|
||||||
this.emit('before');
|
this.emit('before');
|
||||||
|
// emit handler can set requested flag
|
||||||
const wasRequested = this.requested;
|
if (this.requested) {
|
||||||
this.requested = true;
|
|
||||||
this.callback(callback);
|
|
||||||
|
|
||||||
if (wasRequested) {
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.requested = true;
|
||||||
|
this.callback(callback);
|
||||||
|
|
||||||
this.on('error', function() {});
|
this.on('error', function() {});
|
||||||
this.emit('request', this.remote);
|
this.emit('request', this.remote);
|
||||||
|
|
||||||
|
|||||||
@@ -40,13 +40,12 @@ const SERVER_INFO = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
describe('Request', function() {
|
describe('Request', function() {
|
||||||
it('Send request', function(done) {
|
it('Send request', function() {
|
||||||
const remote = {
|
const remote = {
|
||||||
request: function(req) {
|
request: function(req) {
|
||||||
assert(req instanceof Request);
|
assert(req instanceof Request);
|
||||||
assert.strictEqual(typeof req.message, 'object');
|
assert.strictEqual(typeof req.message, 'object');
|
||||||
assert.strictEqual(req.message.command, 'server_info');
|
assert.strictEqual(req.message.command, 'server_info');
|
||||||
done();
|
|
||||||
},
|
},
|
||||||
on: function() {
|
on: function() {
|
||||||
},
|
},
|
||||||
@@ -60,7 +59,10 @@ describe('Request', function() {
|
|||||||
request.request();
|
request.request();
|
||||||
|
|
||||||
// Should only request once
|
// Should only request once
|
||||||
|
assert.throws(function() {
|
||||||
request.request();
|
request.request();
|
||||||
|
}, Error);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Send request -- filterRequest', function(done) {
|
it('Send request -- filterRequest', function(done) {
|
||||||
|
|||||||
Reference in New Issue
Block a user