@@ -1370,4 +1370,44 @@ describe("Promise.finally", () => {
13701370 return result.value;
13711371 ` . expectToEqual ( 99 ) ;
13721372 } ) ;
1373+
1374+ test ( "finally throw overrides fulfillment value" , ( ) => {
1375+ util . testModule `
1376+ let result: any;
1377+ Promise.resolve("ok")
1378+ .finally(() => { throw "finally-error"; })
1379+ .then(v => { result = v; }, e => { result = e; });
1380+ export const output = result;
1381+ ` . expectToEqual ( { output : "finally-error" } ) ;
1382+ } ) ;
1383+
1384+ test ( "finally throw overrides rejection reason" , ( ) => {
1385+ util . testModule `
1386+ let result: any;
1387+ Promise.reject("original")
1388+ .finally(() => { throw "finally-error"; })
1389+ .then(v => { result = v; }, e => { result = e; });
1390+ export const output = result;
1391+ ` . expectToEqual ( { output : "finally-error" } ) ;
1392+ } ) ;
1393+
1394+ test ( "finally returning rejected promise overrides fulfillment" , ( ) => {
1395+ util . testModule `
1396+ let result: any;
1397+ Promise.resolve("ok")
1398+ .finally(() => Promise.reject("finally-rejected") as any)
1399+ .then(v => { result = v; }, e => { result = e; });
1400+ export const output = result;
1401+ ` . expectToEqual ( { output : "finally-rejected" } ) ;
1402+ } ) ;
1403+
1404+ test ( "finally returning rejected promise overrides rejection" , ( ) => {
1405+ util . testModule `
1406+ let result: any;
1407+ Promise.reject("original")
1408+ .finally(() => Promise.reject("finally-rejected") as any)
1409+ .then(v => { result = v; }, e => { result = e; });
1410+ export const output = result;
1411+ ` . expectToEqual ( { output : "finally-rejected" } ) ;
1412+ } ) ;
13731413} ) ;
0 commit comments