Bluebird fiddle

by jib1

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){
  	setTimeout(resolve, ms);
    onCancel(() => {
      document.body.innerHTML += "Cancelled<br />";
    });
  });
}
document.body.innerHTML += "Starting: <br />";

var p = delay(1000);
p.catch(() => {}); // <-- comment out to make onCancel fire
p = p.then(() => {
	document.body.innerHTML += "this should never run <br />";
});
p.cancel();
p.finally(() => {
	document.body.innerHTML += "Finally blocks on a cancelled promise run";
})