Skip to content
This repository was archived by the owner on Mar 5, 2025. It is now read-only.

Commit 942161c

Browse files
authored
Merge pull request #3773 from ethereum/fix/metamask-issue
Rename close event to disconnect
2 parents ee8bec9 + ad58a2a commit 942161c

File tree

4 files changed

+31
-25
lines changed

4 files changed

+31
-25
lines changed

packages/web3-core-requestmanager/src/index.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ RequestManager.prototype.setProvider = function (provider, net) {
122122
});
123123

124124
// notify all subscriptions about bad close conditions
125-
this.provider.on('close', function close(event) {
125+
const disconnect = function disconnect(event) {
126126
if (!_this._isCleanCloseEvent(event) || _this._isIpcCloseError(event)) {
127127
_this.subscriptions.forEach(function (subscription) {
128128
subscription.callback(errors.ConnectionCloseError(event));
@@ -136,7 +136,10 @@ RequestManager.prototype.setProvider = function (provider, net) {
136136
if (_this.provider && _this.provider.emit) {
137137
_this.provider.emit('end', event);
138138
}
139-
});
139+
};
140+
// TODO: Remove close once the standard allows it
141+
this.provider.on('close', disconnect);
142+
this.provider.on('disconnect', disconnect);
140143

141144
// TODO add end, timeout??
142145
}
@@ -257,7 +260,7 @@ RequestManager.prototype.removeSubscription = function (id, callback) {
257260
* Should be called to reset the subscriptions
258261
*
259262
* @method reset
260-
*
263+
*
261264
* @returns {boolean}
262265
*/
263266
RequestManager.prototype.clearSubscriptions = function (keepIsSyncing) {
@@ -310,12 +313,12 @@ RequestManager.prototype._isIpcCloseError = function (event) {
310313

311314
/**
312315
* The jsonrpc result callback for RequestManager.send
313-
*
316+
*
314317
* @method _jsonrpcResultCallback
315-
*
318+
*
316319
* @param {Function} callback the callback to use
317320
* @param {Object} payload the jsonrpc payload
318-
*
321+
*
319322
* @returns {Function} return callback of form (err, result)
320323
*
321324
*/

test/3_givenProvider-ganache.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ describe('web.providers.givenProvider (ganache)', function(){
3030
assert.equal(1, web3.currentProvider.listenerCount('data'))
3131
assert.equal(1, web3.currentProvider.listenerCount('connect'))
3232
assert.equal(1, web3.currentProvider.listenerCount('error'))
33-
assert.equal(1, web3.currentProvider.listenerCount('close'))
33+
// TODO: Remove close once the standard allows it
34+
assert(
35+
web3.currentProvider.listenerCount("disconnect") === 1 || web3.currentProvider.listenerCount("close") === 1
36+
);
3437
});
3538

3639
it('deploys a contract', async function(){

test/eth.subscribe.ganache.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -242,12 +242,12 @@ describe('subscription connect/reconnect', function () {
242242
.once('data', async function () {
243243
await pify(server.close)();
244244
})
245-
.on('error', function (err) {
246-
counter++;
247-
assert(err.message.includes('CONNECTION ERROR'));
248-
assert(err.message.includes('close code `1006`'));
249-
assert(err.message.includes('Connection dropped by remote peer.'));
250-
});
245+
246+
web3.eth.currentProvider.on('close', function (err) {
247+
counter++;
248+
assert(err.reason.includes('Connection dropped by remote peer.'));
249+
assert(err.code === 1006);
250+
});
251251

252252
// Make sure error handler doesn't fire twice
253253
await waitSeconds(2);

test/websocket.ganache.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ describe('WebsocketProvider (ganache)', function () {
4343
await web3.eth.getBlockNumber();
4444

4545
await new Promise(async function(resolve){
46-
web3.currentProvider.once('error', function(err){
47-
assert(err.message.includes('Connection dropped by remote peer.'))
48-
assert(err.message.includes('1006'));
46+
web3.currentProvider.on('close', function (err) {
47+
assert(err.reason.includes('Connection dropped by remote peer.'));
48+
assert(err.code === 1006);
4949
resolve();
5050
});
5151

@@ -64,9 +64,9 @@ describe('WebsocketProvider (ganache)', function () {
6464
await web3.eth.getBlockNumber();
6565

6666
await new Promise(async function(resolve){
67-
web3.currentProvider.once('error', function(err){
68-
assert(err.message.includes('1012'));
69-
assert(err.message.includes('restart'));
67+
web3.currentProvider.on('close', function (err) {
68+
assert(err.reason.includes('restart'));
69+
assert(err.code === 1012);
7070
resolve();
7171
});
7272

@@ -106,9 +106,9 @@ describe('WebsocketProvider (ganache)', function () {
106106
await web3.eth.getBlockNumber();
107107

108108
await new Promise(async function(resolve){
109-
web3.currentProvider.once('end', function(event){
110-
assert.equal(event.type, 'close');
111-
assert.equal(event.wasClean, false);
109+
web3.currentProvider.on('close', function (err) {
110+
assert.equal(err.type, 'close');
111+
assert.equal(err.wasClean, false);
112112
resolve();
113113
});
114114

@@ -127,9 +127,9 @@ describe('WebsocketProvider (ganache)', function () {
127127
await web3.eth.getBlockNumber();
128128

129129
await new Promise(async function(resolve){
130-
web3.currentProvider.once('end', function(event){
131-
assert.equal(event.type, 'close');
132-
assert.equal(event.wasClean, true);
130+
web3.currentProvider.on('close', function (err) {
131+
assert.equal(err.type, 'close');
132+
assert.equal(err.wasClean, true);
133133
resolve();
134134
});
135135

0 commit comments

Comments
 (0)