@@ -55,51 +55,59 @@ function createGrpcErrorFromDriveResponse(code, info) {
55
55
56
56
const decodedInfo = info ? cbor . decode ( Buffer . from ( info , 'base64' ) ) : { } ;
57
57
58
+ // eslint-disable-next-line prefer-destructuring
59
+ const message = decodedInfo . message ;
60
+ const data = decodedInfo . data || { } ;
61
+
58
62
// gRPC error codes
59
63
if ( code <= 16 ) {
60
64
const CommonErrorClass = COMMON_ERROR_CLASSES [ code . toString ( ) ] ;
61
65
if ( CommonErrorClass ) {
62
66
return new CommonErrorClass (
63
- decodedInfo . message ,
64
- createRawMetadata ( decodedInfo . data ) ,
67
+ message ,
68
+ createRawMetadata ( data ) ,
65
69
) ;
66
70
}
67
71
68
72
// Restore stack for internal error
69
73
if ( code === GrpcErrorCodes . INTERNAL ) {
70
- const error = new Error ( decodedInfo . message ) ;
71
- error . stack = decodedInfo . data . stack ;
74
+ const error = new Error ( message ) ;
75
+
76
+ // in case of verbose internal error
77
+ if ( data . stack ) {
78
+ error . stack = data . stack ;
72
79
73
- delete decodedInfo . data . stack ;
80
+ delete data . stack ;
81
+ }
74
82
75
- return new InternalGrpcError ( error , createRawMetadata ( decodedInfo . data ) ) ;
83
+ return new InternalGrpcError ( error , createRawMetadata ( data ) ) ;
76
84
}
77
85
78
86
return new GrpcError (
79
87
code ,
80
- decodedInfo . message ,
81
- createRawMetadata ( decodedInfo . data ) ,
88
+ message ,
89
+ createRawMetadata ( data ) ,
82
90
) ;
83
91
}
84
92
85
93
// Undefined Drive and DAPI errors
86
94
if ( code >= 17 && code < 1000 ) {
87
95
return new GrpcError (
88
96
GrpcErrorCodes . UNKNOWN ,
89
- decodedInfo . message ,
90
- createRawMetadata ( decodedInfo . data ) ,
97
+ message ,
98
+ createRawMetadata ( data ) ,
91
99
) ;
92
100
}
93
101
94
102
// DPP errors
95
103
if ( code >= 1000 && code < 5000 ) {
96
- const consensusError = createConsensusError ( code , decodedInfo . data . arguments || [ ] ) ;
104
+ const consensusError = createConsensusError ( code , data . arguments || [ ] ) ;
97
105
98
106
// Basic
99
107
if ( code >= 1000 && code < 2000 ) {
100
108
return new InvalidArgumentGrpcError (
101
109
consensusError . message ,
102
- { code, ...createRawMetadata ( decodedInfo . data ) } ,
110
+ { code, ...createRawMetadata ( data ) } ,
103
111
) ;
104
112
}
105
113
@@ -108,23 +116,23 @@ function createGrpcErrorFromDriveResponse(code, info) {
108
116
return new GrpcError (
109
117
GrpcErrorCodes . UNAUTHENTICATED ,
110
118
consensusError . message ,
111
- { code, ...createRawMetadata ( decodedInfo . data ) } ,
119
+ { code, ...createRawMetadata ( data ) } ,
112
120
) ;
113
121
}
114
122
115
123
// Fee
116
124
if ( code >= 3000 && code < 4000 ) {
117
125
return new FailedPreconditionGrpcError (
118
126
consensusError . message ,
119
- { code, ...createRawMetadata ( decodedInfo . data ) } ,
127
+ { code, ...createRawMetadata ( data ) } ,
120
128
) ;
121
129
}
122
130
123
131
// State
124
132
if ( code >= 4000 && code < 5000 ) {
125
133
return new InvalidArgumentGrpcError (
126
134
consensusError . message ,
127
- { code, ...createRawMetadata ( decodedInfo . data ) } ,
135
+ { code, ...createRawMetadata ( data ) } ,
128
136
) ;
129
137
}
130
138
}
0 commit comments