diff --git a/manager.cpp b/manager.cpp
index 0eec6f2..870bf60 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -27,7 +27,6 @@
 
 void BlobManager::eraseSession(GenericBlobInterface* handler, uint16_t session)
 {
-    sessions.erase(session);
     /* Ok for openSessions[handler] to be an empty set */
     openSessions[handler].erase(session);
 
@@ -37,6 +36,8 @@
     {
         openFiles.erase(path);
     }
+    /* Cannot erase before getPath() is called */
+    sessions.erase(session);
 }
 
 void BlobManager::cleanUpStaleSessions(GenericBlobInterface* handler)
diff --git a/test/manager_delete_unittest.cpp b/test/manager_delete_unittest.cpp
index 9ad3afd..0a59aa7 100644
--- a/test/manager_delete_unittest.cpp
+++ b/test/manager_delete_unittest.cpp
@@ -84,4 +84,28 @@
     // Try to delete the file.
     EXPECT_TRUE(mgr.deleteBlob(path));
 }
+
+TEST(ManagerDeleteTest, DeleteWorksAfterOpenClose)
+{
+    // The Blob manager is able to decrement the ref count and delete.
+
+    BlobManager mgr;
+    std::unique_ptr<BlobMock> m1 = std::make_unique<BlobMock>();
+    auto m1ptr = m1.get();
+    EXPECT_TRUE(mgr.registerHandler(std::move(m1)));
+
+    uint16_t flags = OpenFlags::read, sess;
+    std::string path = "/asdf/asdf";
+
+    EXPECT_CALL(*m1ptr, canHandleBlob(path)).WillRepeatedly(Return(true));
+    EXPECT_CALL(*m1ptr, open(_, flags, path)).WillOnce(Return(true));
+    EXPECT_CALL(*m1ptr, close(_)).WillOnce(Return(true));
+    EXPECT_CALL(*m1ptr, deleteBlob(path)).WillOnce(Return(true));
+
+    EXPECT_TRUE(mgr.open(flags, path, &sess));
+    EXPECT_TRUE(mgr.close(sess));
+
+    // Try to delete the file.
+    EXPECT_TRUE(mgr.deleteBlob(path));
+}
 } // namespace blobs
