@@ -33,15 +33,29 @@ function MetamaskInpageProvider (connectionStream) {
33
33
} )
34
34
asyncProvider . on ( 'error' , console . error . bind ( console ) )
35
35
self . asyncProvider = asyncProvider
36
+
37
+ self . idMap = { }
36
38
// handle sendAsync requests via asyncProvider
37
39
self . sendAsync = function ( payload , cb ) {
38
40
// rewrite request ids
39
- var request = jsonrpcMessageTransform ( payload , ( message ) => {
40
- message . id = createRandomId ( )
41
+ var request = eachJsonMessage ( payload , ( message ) => {
42
+ var newId = createRandomId ( )
43
+ self . idMap [ newId ] = message . id
44
+ message . id = newId
41
45
return message
42
46
} )
43
47
// forward to asyncProvider
44
- asyncProvider . sendAsync ( request , cb )
48
+ asyncProvider . sendAsync ( request , function ( err , res ) {
49
+ if ( err ) return cb ( err )
50
+ // transform messages to original ids
51
+ eachJsonMessage ( res , ( message ) => {
52
+ var oldId = self . idMap [ message . id ]
53
+ delete self . idMap [ message . id ]
54
+ message . id = oldId
55
+ return message
56
+ } )
57
+ cb ( null , res )
58
+ } )
45
59
}
46
60
}
47
61
@@ -111,7 +125,7 @@ function createRandomId(){
111
125
return datePart + extraPart
112
126
}
113
127
114
- function jsonrpcMessageTransform ( payload , transformFn ) {
128
+ function eachJsonMessage ( payload , transformFn ) {
115
129
if ( Array . isArray ( payload ) ) {
116
130
return payload . map ( transformFn )
117
131
} else {
0 commit comments