This PR improves the `Promise` API by considering how dropped promises can lead to never-finished tasks.