Publish and Subscribe and Promises - resolve_when

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/knockout/3.1.0/knockout-min.js"></script>
<h1>Resolved_when</h1>
<ul id='list'></ul>

JavaScript 1.7

var resolve_when = (obs, test) => {
  if (!test) {
    test = function (t) { return Boolean(t) }  
  }
  if (test(obs())) { return Promise.resolve(obs); }
  return new Promise(function (resolve) {
    var subs = obs.subscribe(function(v) {
      if (test(v)) {
        resolve(obs);
        subs.dispose();
      }
    });
  });
 
 }

obs = ko.observable()

//# Arbitrary test
resolve_when(obs, (v) => v == 'xyz')
    .then((ov) => {$("#list").append(`<li>obs meets arbitrary test: ${ko.unwrap(ov)}</li>`)})
    
//# Before obs is set
resolve_when(obs)
    .then((ov) => {$("#list").append(`<li>before obs is set: ${ko.unwrap(ov)}</li>`)})
    
//# Set obs.
obs('Published!')

//# After obs is set
resolve_when(obs)
    .then((ov) => {$("#list").append(`<li>after obs is set: ${ko.unwrap(ov)}</li>`)})
    
//# Set obs to satisfy our arbitrary test.
obs('xyz')