diff --git a/lib/hydrater-tika/helpers/hydrate.js b/lib/hydrater-tika/helpers/hydrate.js
index <HASH>..<HASH> 100644
--- a/lib/hydrater-tika/helpers/hydrate.js
+++ b/lib/hydrater-tika/helpers/hydrate.js
@@ -28,12 +28,21 @@ module.exports = function(task, done) {
   async.waterfall([
     function(cb) {
       var path = '/tmp/' + crypto.randomBytes(20).toString('hex');
+
+      // Sometimes, request fire "end" and sometimes "finish".
+      var hasFinished = false;
+      var endFunction = function() {
+        if(!hasFinished) {
+          cb(null, path);
+          hasFinished = true;
+        }
+      };
+
       // Download the file
       request(task.file_path)
         .pipe(fs.createWriteStream(path))
-        .on('finish', function() {
-          cb(null, path);
-        });
+        .on('end', endFunction)
+        .on('finish', endFunction);
     },
     function(path, cb) {
       tikaShell(path , cb);
Listen to end and finish events on request stream