Index: uspace/lib/cpp/include/__bits/thread/promise.hpp
===================================================================
--- uspace/lib/cpp/include/__bits/thread/promise.hpp	(revision 0d299c931cd7cf49fef4a6c23392d667408330fb)
+++ uspace/lib/cpp/include/__bits/thread/promise.hpp	(revision 0fc6b6cf99b84df24378f136f2e2415f56737a0c)
@@ -162,4 +162,15 @@
             future<R> get_future()
             {
+                assert(this->state_);
+
+                /**
+                 * Note: Future constructor that takes a shared
+                 *       state as its argument does not call increment
+                 *       because a future can be created as the only
+                 *       owner of that state (e.g. when created by
+                 *       std::async), so we have to do it here.
+                 */
+                this->state_->increment();
+
                 return future<R>{this->state_};
             }
@@ -253,4 +264,15 @@
             future<R&> get_future()
             {
+                assert(this->state_);
+
+                /**
+                 * Note: Future constructor that takes a shared
+                 *       state as its argument does not call increment
+                 *       because a future can be created as the only
+                 *       owner of that state (e.g. when created by
+                 *       std::async), so we have to do it here.
+                 */
+                this->state_->increment();
+
                 return future<R&>{this->state_};
             }
@@ -315,4 +337,15 @@
             future<void> get_future()
             {
+                assert(this->state_);
+
+                /**
+                 * Note: Future constructor that takes a shared
+                 *       state as its argument does not call increment
+                 *       because a future can be created as the only
+                 *       owner of that state (e.g. when created by
+                 *       std::async), so we have to do it here.
+                 */
+                this->state_->increment();
+
                 return future<void>{this->state_};
             }
