diff --git a/base/Status.cpp b/base/Status.cpp
index 8367fb8..e7320a8 100644
--- a/base/Status.cpp
+++ b/base/Status.cpp
@@ -98,7 +98,7 @@
 }
 
 namespace details {
-    void return_status::checkStatus() const {
+    void return_status::assertOk() const {
         if (!isOk()) {
             LOG(FATAL) << "Attempted to retrieve value from failed HIDL call: " << description();
         }
@@ -110,6 +110,16 @@
             LOG(FATAL) << "Failed HIDL return status not checked: " << description();
         }
     }
+
+    return_status &return_status::operator=(return_status &&other) {
+        if (!mCheckedStatus && !isOk()) {
+            LOG(FATAL) << "Failed HIDL return status not checked: " << description();
+        }
+        std::swap(mStatus, other.mStatus);
+        std::swap(mCheckedStatus, other.mCheckedStatus);
+        return *this;
+    }
+
 }  // namespace details
 
 }  // namespace hardware
diff --git a/base/include/hidl/Status.h b/base/include/hidl/Status.h
index 2f26ffa..c5c5bd9 100644
--- a/base/include/hidl/Status.h
+++ b/base/include/hidl/Status.h
@@ -147,7 +147,7 @@
         Status mStatus {};
         mutable bool mCheckedStatus = false;
     protected:
-        void checkStatus() const;
+        void assertOk() const;
     public:
         return_status() {}
         return_status(Status s) : mStatus(s) {}
@@ -158,12 +158,7 @@
         return_status(return_status &&other) {
             *this = std::move(other);
         }
-        return_status &operator=(return_status &&other) {
-            checkStatus();
-            std::swap(mStatus, other.mStatus);
-            std::swap(mCheckedStatus, other.mCheckedStatus);
-            return *this;
-        }
+        return_status &operator=(return_status &&other);
 
         ~return_status();
 
@@ -196,7 +191,7 @@
     ~Return() = default;
 
     operator T() const {
-        checkStatus();
+        assertOk();
         return mVal;
     }
 
@@ -222,7 +217,7 @@
     ~Return() = default;
 
     operator sp<T>() const {
-        checkStatus();
+        assertOk();
         return mVal;
     }
 };
