The gist: by having a Promise adopt the state of a forever pending one, you can suspend its then handlers chain.
const foreverPending = new Promise(function() {});
let cancel
new Promise(function(fulfill, reject) {
cancel = function() {fulfill(foreverPending)}
setTimeout(fulfill, 1000, 5)