@@ -61,35 +61,6 @@ function errnoException(err, syscall, hostname) {
61
61
}
62
62
63
63
64
- // c-ares invokes a callback either synchronously or asynchronously,
65
- // but the dns API should always invoke a callback asynchronously.
66
- //
67
- // This function makes sure that the callback is invoked asynchronously.
68
- // It returns a function that invokes the callback within nextTick().
69
- //
70
- // To avoid invoking unnecessary nextTick(), `immediately` property of
71
- // returned function should be set to true after c-ares returned.
72
- //
73
- // Usage:
74
- //
75
- // function someAPI(callback) {
76
- // callback = makeAsync(callback);
77
- // channel.someAPI(..., callback);
78
- // callback.immediately = true;
79
- // }
80
- function makeAsync ( callback ) {
81
- return function asyncCallback ( ...args ) {
82
- if ( asyncCallback . immediately ) {
83
- // The API already returned, we can invoke the callback immediately.
84
- callback . apply ( null , args ) ;
85
- } else {
86
- args . unshift ( callback ) ;
87
- process . nextTick . apply ( null , args ) ;
88
- }
89
- } ;
90
- }
91
-
92
-
93
64
function onlookup ( err , addresses ) {
94
65
if ( err ) {
95
66
return this . callback ( errnoException ( err , 'getaddrinfo' , this . hostname ) ) ;
@@ -153,23 +124,22 @@ function lookup(hostname, options, callback) {
153
124
if ( family !== 0 && family !== 4 && family !== 6 )
154
125
throw new TypeError ( 'Invalid argument: family must be 4 or 6' ) ;
155
126
156
- callback = makeAsync ( callback ) ;
157
-
158
127
if ( ! hostname ) {
159
128
if ( all ) {
160
- callback ( null , [ ] ) ;
129
+ process . nextTick ( callback , null , [ ] ) ;
161
130
} else {
162
- callback ( null , null , family === 6 ? 6 : 4 ) ;
131
+ process . nextTick ( callback , null , null , family === 6 ? 6 : 4 ) ;
163
132
}
164
133
return { } ;
165
134
}
166
135
167
136
var matchedFamily = isIP ( hostname ) ;
168
137
if ( matchedFamily ) {
169
138
if ( all ) {
170
- callback ( null , [ { address : hostname , family : matchedFamily } ] ) ;
139
+ process . nextTick (
140
+ callback , null , [ { address : hostname , family : matchedFamily } ] ) ;
171
141
} else {
172
- callback ( null , hostname , matchedFamily ) ;
142
+ process . nextTick ( callback , null , hostname , matchedFamily ) ;
173
143
}
174
144
return { } ;
175
145
}
@@ -182,11 +152,9 @@ function lookup(hostname, options, callback) {
182
152
183
153
var err = cares . getaddrinfo ( req , hostname , family , hints ) ;
184
154
if ( err ) {
185
- callback ( errnoException ( err , 'getaddrinfo' , hostname ) ) ;
155
+ process . nextTick ( callback , errnoException ( err , 'getaddrinfo' , hostname ) ) ;
186
156
return { } ;
187
157
}
188
-
189
- callback . immediately = true ;
190
158
return req ;
191
159
}
192
160
@@ -217,7 +185,6 @@ function lookupService(host, port, callback) {
217
185
throw new TypeError ( '"callback" argument must be a function' ) ;
218
186
219
187
port = + port ;
220
- callback = makeAsync ( callback ) ;
221
188
222
189
var req = new GetNameInfoReqWrap ( ) ;
223
190
req . callback = callback ;
@@ -227,8 +194,6 @@ function lookupService(host, port, callback) {
227
194
228
195
var err = cares . getnameinfo ( req , host , port ) ;
229
196
if ( err ) throw errnoException ( err , 'getnameinfo' , host ) ;
230
-
231
- callback . immediately = true ;
232
197
return req ;
233
198
}
234
199
@@ -263,7 +228,6 @@ function resolver(bindingName) {
263
228
throw new Error ( '"callback" argument must be a function' ) ;
264
229
}
265
230
266
- callback = makeAsync ( callback ) ;
267
231
var req = new QueryReqWrap ( ) ;
268
232
req . bindingName = bindingName ;
269
233
req . callback = callback ;
@@ -272,7 +236,6 @@ function resolver(bindingName) {
272
236
req . ttl = ! ! ( options && options . ttl ) ;
273
237
var err = binding ( req , name ) ;
274
238
if ( err ) throw errnoException ( err , bindingName ) ;
275
- callback . immediately = true ;
276
239
return req ;
277
240
} ;
278
241
}
0 commit comments