diff --git a/src/Flysystem/Adapter/ReplicateAdapter.php b/src/Flysystem/Adapter/ReplicateAdapter.php
new file mode 100644
index 0000000..4380894
--- /dev/null
+++ b/src/Flysystem/Adapter/ReplicateAdapter.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\flysystem\Flysystem\Adapter\ReplicateAdapter.
+ */
+
+namespace Drupal\flysystem\Flysystem\Adapter;
+
+use League\Flysystem\Config;
+use League\Flysystem\Replicate\ReplicateAdapter as FlysystemReplicateAdapter;
+use League\Flysystem\Util;
+
+/**
+ * @todo Remove after
+ *   https://github.com/thephpleague/flysystem-replicate-adapter/pull/5
+ *
+ * @codeCoverageIgnore
+ */
+class ReplicateAdapter extends FlysystemReplicateAdapter {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function updateStream($path, $resource, Config $config) {
+    if (!$this->source->updateStream($path, $resource, $config)) {
+      return FALSE;
+    }
+
+    if (!$resource = $this->ensureSeekable($resource, $path)) {
+      return FALSE;
+    }
+
+    if ($this->replica->has($path)) {
+      return $this->replica->updateStream($path, $resource, $config);
+    }
+
+    return $this->replica->writeStream($path, $resource, $config);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function writeStream($path, $resource, Config $config) {
+    if (!$this->source->writeStream($path, $resource, $config)) {
+      return FALSE;
+    }
+
+    if (!$resource = $this->ensureSeekable($resource, $path)) {
+      return FALSE;
+    }
+
+    return $this->replica->writeStream($path, $resource, $config);
+  }
+
+  /**
+   * Rewinds the stream, or returns the source stream if not seekable.
+   *
+   * @param resource $resource
+   *   The resource to rewind.
+   * @param string $path
+   *   The path where the resource exists.
+   *
+   * @return resource
+   *   A stream set to position zero.
+   */
+  protected function ensureSeekable($resource, $path) {
+    if (Util::isSeekableStream($resource) && rewind($resource)) {
+      return $resource;
+    }
+
+    $stream = $this->source->readStream($path);
+
+    return $stream ? $stream['stream'] : FALSE;
+  }
+
+}
diff --git a/src/FlysystemFactory.php b/src/FlysystemFactory.php
index a9bbc73..6f41ffb 100644
--- a/src/FlysystemFactory.php
+++ b/src/FlysystemFactory.php
@@ -10,9 +10,9 @@ namespace Drupal\flysystem;
 use Drupal\Component\Plugin\PluginManagerInterface;
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\Core\Site\Settings;
+use Drupal\flysystem\Flysystem\Adapter\ReplicateAdapter;
 use League\Flysystem\Cached\CachedAdapter;
 use League\Flysystem\Filesystem;
-use League\Flysystem\Replicate\ReplicateAdapter;
 use Psr\Log\LoggerInterface;
 
 /**
