Use a queue for saving to not trash files

If `save()` was called very quickly for the same data the output file
could end up in a bad state. Using a single worker queue solves this.