function pause_effect(effect, callback) {
	/** @type {TransitionManager[]} */
	var transitions = [];

	pause_children(effect, transitions, true);

	run_out_transitions(transitions, () => {
		destroy_effect(effect);
		if (callback) callback();
	});
}
When a block effect is removed, we don't immediately destroy it or yank it
out of the DOM, because it might have transitions. Instead, we 'pause' it.
It stays around (in memory, and in the DOM) until outro transitions have
completed, and if the state change is reversed then we _resume_ it.
A paused effect does not update, and the DOM subtree becomes inert.
@param {Effect} effect
@param {() => void} [callback]