Tasks are supposed to be both operations and promises. However, I had forgotten to make the task consumaeble as an operation, and only a promise. However, because we were monkey-patching Promise.prototype, it was actually hiding the gap because everywher we needed to consume a task as an operation, it just used the promise as operation route.
Approach
I added back the operation functionality, but at the same time, I actually removed the monkey-patch of Promise.prototype for our test suite so that we are forced to follow the operation pathway explicitly. That way, we won't risk regressing back to non-functioning operation tasks. It does make the tests a little more verbose, but the added safety is worth it.
Motivation
Tasks are supposed to be both operations and promises. However, I had forgotten to make the task consumaeble as an operation, and only a promise. However, because we were monkey-patching
Promise.prototype
, it was actually hiding the gap because everywher we needed to consume a task as an operation, it just used the promise as operation route.Approach
I added back the operation functionality, but at the same time, I actually removed the monkey-patch of
Promise.prototype
for our test suite so that we are forced to follow the operation pathway explicitly. That way, we won't risk regressing back to non-functioning operation tasks. It does make the tests a little more verbose, but the added safety is worth it.