Make the intrusive_ptr in future_data protected so that derived classes can
access it; add a comment clarifying the intent of the .reset() in the the invalidate
RAII object.