Skip to content

Commit 5fb34f7

Browse files
authored
Merge pull request #38 from Lemoncode/feature/#37_enhance_promise_chaining
#37 Return input args in promise chaining
2 parents bee39b6 + 27ecf7f commit 5fb34f7

2 files changed

Lines changed: 19 additions & 4 deletions

File tree

src/trackPromise.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@ export const trackPromise = (promise, area) => {
1717
const promiseInProgress = anyPromiseInProgress(area);
1818
emitter.emit(promiseCounterUpdateEventId, promiseInProgress, area);
1919

20-
promise
21-
.then(() => decrementPromiseCounter(area),
22-
() => decrementPromiseCounter(area)
23-
);
20+
const onResolveHandler = () => decrementPromiseCounter(area);
21+
promise.then(onResolveHandler, onResolveHandler);
2422

2523
return promise;
2624
};

src/trackPromise.test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,23 @@ describe('trackPromise', () => {
8686
done();
8787
});
8888
});
89+
90+
// Promise chaining working properly.
91+
it('Promise returned must handle transparently the result when resolved', (done) => {
92+
// Arrange
93+
const expectedPromiseResult = "promise result";
94+
const promise = Promise.resolve(expectedPromiseResult);
95+
96+
// Act
97+
const trackedPromise = trackPromise(promise);
98+
99+
// Assert
100+
trackedPromise.then((trackedPromiseResult) => {
101+
expect(trackedPromiseResult).toEqual(expectedPromiseResult);
102+
done();
103+
});
104+
});
105+
89106
});
90107

91108
describe('using custom area', () => {

0 commit comments

Comments
 (0)