Same problem with the throw here. This is a good occasion to explain why ``@throws {Error}`` is harmful here. Based on the documentation, I write this:

```
var saver = new Saver(...);
try {
    saver.save();
}
catch (e) {
      // OMG! I was not able to save!
      var fallback_saver = new Saver();
      fallback_saver.save();
     [etc...]
}
```

The documentation tells me that ``save()`` throws an Error if save fails, so with the above I catch saving errors and then use a fall back method to save. The problem is that this *cannot* work because ``save()`` itself does not throw anything. Error objects are thrown by an asynchronous operation.