I like the simplicity of it !

But we can do it even simpler:
* in the constructor: `this._currentTask = Promise.resolve();`
* and the `push` function:
```javascript
TaskRunner.prototype.push = function(task) {
  return this._currentTask = this._currentTask.then(task, task);
};
```

and... `push` now returns the promise! so maybe you can simplify checkSilentModeFor as well !