@@ -44,6 +44,29 @@ describe('future', () => {
4444 resolve ( reject ( expected ) )
4545 return promise . then ( assert . ifError , x => assert . strictEqual ( expected , x ) )
4646 } )
47+
48+ it ( 'should resolve with pending promise' , ( ) => {
49+ const { resolve : resolve1 , promise : promise1 } = future ( )
50+ const { resolve : resolve2 , promise : promise2 } = future ( )
51+ const { resolve : resolve3 , promise : promise3 } = future ( )
52+ const expected = { }
53+ setTimeout ( resolve2 , 1 , promise1 )
54+ setTimeout ( resolve1 , 2 , expected )
55+ setTimeout ( resolve3 , 2 , promise2 )
56+ return promise3 . then ( x => assert . strictEqual ( expected , x ) )
57+ } )
58+
59+ it ( 'should resolve with pending promise that already has handle' , ( ) => {
60+ const { resolve : resolve1 , promise : promise1 } = future ( )
61+ const { resolve : resolve2 , promise : promise2 } = future ( )
62+ const { resolve : resolve3 , promise : promise3 } = future ( )
63+ const expected = { }
64+ promise1 . map ( x => x === expected )
65+ setTimeout ( resolve2 , 1 , promise1 )
66+ setTimeout ( resolve1 , 2 , expected )
67+ setTimeout ( resolve3 , 2 , promise2 )
68+ return promise3 . then ( x => assert . strictEqual ( expected , x ) )
69+ } )
4770 } )
4871
4972 describe ( 'when resolved to another promise' , ( ) => {
0 commit comments