diff --git a/core/lib/Drupal/Core/Cache/BackendChain.php b/core/lib/Drupal/Core/Cache/BackendChain.php
index 25d9b14..f4b2933 100644
--- a/core/lib/Drupal/Core/Cache/BackendChain.php
+++ b/core/lib/Drupal/Core/Cache/BackendChain.php
@@ -228,7 +228,7 @@ public function isEmpty() {
    */
   public function removeBin() {
     foreach ($this->backends as $backend) {
-      $this->removeBin();
+      $backend->removeBin();
     }
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Cache/BackendChainImplementationUnitTest.php b/core/tests/Drupal/Tests/Core/Cache/BackendChainImplementationUnitTest.php
index 300a926..cba4c31 100644
--- a/core/tests/Drupal/Tests/Core/Cache/BackendChainImplementationUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Cache/BackendChainImplementationUnitTest.php
@@ -307,4 +307,18 @@ public function testDeleteTagsPropagation() {
       && $this->thirdBackend->get('test_cid_clear3'),
       'Cached item matching the tag was removed from all backends.');
   }
+
+  /**
+   * Test that removing bin propagates to all backends.
+   */
+  public function testRemoveBin() {
+    $chain = new BackendChain('foo');
+    for ($i = 0; $i < 3; $i++) {
+      $backend = $this->getMock('Drupal\Core\Cache\CacheBackendInterface');
+      $backend->expects($this->once())->method('removeBin');
+      $chain->appendBackend($backend);
+    }
+
+    $chain->removeBin();
+  }
 }
