@@ -3,6 +3,14 @@ const EventEmitter = require('events').EventEmitter
3
3
4
4
const NOOP = function ( ) { }
5
5
6
+ const remove = ( list , value ) => {
7
+ const i = list . indexOf ( value )
8
+
9
+ if ( i !== - 1 ) {
10
+ list . splice ( i , 1 )
11
+ }
12
+ }
13
+
6
14
const removeWhere = ( list , predicate ) => {
7
15
const i = list . findIndex ( predicate )
8
16
@@ -157,18 +165,20 @@ class Pool extends EventEmitter {
157
165
return result
158
166
}
159
167
168
+ const queueCallback = ( err , res , done ) => {
169
+ clearTimeout ( tid )
170
+ response . callback ( err , res , done )
171
+ }
172
+
160
173
// set connection timeout on checking out an existing client
161
174
const tid = setTimeout ( ( ) => {
162
175
// remove the callback from pending waiters because
163
176
// we're going to call it with a timeout error
164
- this . _pendingQueue = this . _pendingQueue . filter ( cb => cb === response . callback )
177
+ remove ( this . _pendingQueue , queueCallback )
165
178
response . callback ( new Error ( 'timeout exceeded when trying to connect' ) )
166
179
} , this . options . connectionTimeoutMillis )
167
180
168
- this . _pendingQueue . push ( function ( err , res , done ) {
169
- clearTimeout ( tid )
170
- response . callback ( err , res , done )
171
- } )
181
+ this . _pendingQueue . push ( queueCallback )
172
182
return result
173
183
}
174
184
0 commit comments