A bound function object can't be rebound... Now there is no benefit to the heinous looking bind above. Just do this and move on:

```js
  
  function scheduleWithID(err, alarm) {
    this.schedule({
      type: 'normal',
      first: true
    }, this.saveCallback(callback));
  }

  if (value) {
    if (!this.id) {
      // if we don't have an ID yet, save to IndexedDB to
      // get one, and then call scheduleWithID
      this.save(scheduleWithID.bind(this));
    } else {
      // otherwise, just call scheduleWithID
      setTimeout(scheduleWithID.bind(this, null, this), 0);
    }
  } else if (this.enabled) {
    this.cancel();
    this.save(callback);
  } else if (callback) {
    setTimeout(callback.bind(undefined, null, this), 0);
  }


```