Switch.MakeSourceThese functions are somewhat unsafe, since they don't enforce lifetime by passing a new switch as an argument to the user. They are nevertheless useful for applications which haven't been switch to the EIO-style resource handling discipline, esp. when dealing with connection pools. The caqti-eio package uses Eio.Switch which lacks these functions.
run f calls f with a fresh switch which will be released upon exit or in case of failure.
on_release_cancellable sw f registers f to be called upon the evetual release of sw unless remove_hook is called on the returned hook before that happen.
Given a hook returned by on_release_cancellable, remove_hook hook cancels the cleanup registered by that call.