When you want to acquire a resource, do some work with it, and then
release the resource, it is a good idea to use
bracket, because
bracket will install the necessary exception handler to release
the resource in the event that an exception is raised during the
computation. If an exception is raised, then
bracket will
re-raise the exception (after performing the release).