JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.1.5/bluebird.min.js"></script>
JavaScript
"use strict";
Promise.config({cancellation: true});
function delay(ms) {
return new Promise(function(resolve, reject, onCancel){
let interval = setTimeout(ms, resolve);
onCancel(() => {
clearInterval(interval);
document.body.innerHTML += "Cancelled<br />";
});
});
}
document.body.innerHTML += "Starting: <br />";
var p = delay(1000);
p.catch(() => {});
p.cancel();
p.then(() => {
document.body.innerHTML += "this should never run <br />";
}).finally(() => {
document.body.innerHTML += "Finally blocks on a cancelled promise run";
});