Download zip files safely.

The callback from `request()` can fire before the stream has finished pushing all data to disk.  This corrects this by waiting for the stream to emit an `end` event.