For copyable futures, add a weak_future<> type that can be locked to return a future<> (which may be !valid() if the future has expired).