~promise_base() { if ( future_) { future_->owner_destroyed(); } }
~packaged_task() { if ( task_) { task_->owner_destroyed(); } }
~promise_base() { if ( future_ && obtained_) { future_->owner_destroyed(); } }