Task<B> bracket<B>(Function1<A,Task<B>> use, Function1<A, Task<void>> release) => flatMap((a) => use(a).guarantee(release(a)));