static bool erase_vorbis_stream(const future<vector<float>>& fut) { return !fut.valid(); }
shared_future(const shared_future& rhs) : state(rhs.state) , listener(state ? state->add_listener() : future<bool>()) { assert(listener.valid()); }
bool valid() const { return listener.valid(); }
shared_future(future<T>&& future) : state(new shared_state_multiplexer<T>(std::move(future)) ) , listener(state->add_listener()) { assert(listener.valid()); }