@@ -112,3 +112,49 @@ test('works with timeout', async t => {
112112
113113 t . true ( timeout ) ;
114114} ) ;
115+
116+ test ( 'accept custom createConnection function' , async t => {
117+ const custom = Symbol ( 'custom' ) ;
118+
119+ const result = await resolveALPN ( {
120+ ...s . options ,
121+ resolveSocket : true
122+ } , ( options , callback ) => {
123+ const socket = tls . connect ( options , callback ) ;
124+ socket [ custom ] = true ;
125+
126+ return socket ;
127+ } ) ;
128+
129+ t . is ( result . alpnProtocol , 'h2' ) ;
130+ t . true ( result . socket instanceof tls . TLSSocket ) ;
131+ t . true ( result . socket [ custom ] ) ;
132+
133+ result . socket . destroy ( ) ;
134+ } ) ;
135+
136+ test ( 'async createConnection function' , async t => {
137+ const custom = Symbol ( 'custom' ) ;
138+
139+ const result = await resolveALPN ( {
140+ ...s . options ,
141+ resolveSocket : true
142+ } , async ( options , callback ) => {
143+ return new Promise ( ( resolve , reject ) => {
144+ const socket = tls . connect ( options , callback ) ;
145+ socket [ custom ] = true ;
146+
147+ socket . once ( 'error' , reject ) ;
148+ socket . once ( 'connect' , ( ) => {
149+ socket . off ( 'error' , reject ) ;
150+ resolve ( socket ) ;
151+ } ) ;
152+ } ) ;
153+ } ) ;
154+
155+ t . is ( result . alpnProtocol , 'h2' ) ;
156+ t . true ( result . socket instanceof tls . TLSSocket ) ;
157+ t . true ( result . socket [ custom ] ) ;
158+
159+ result . socket . destroy ( ) ;
160+ } ) ;
0 commit comments