bracket<A, B> function

Task<B> Function(Task<A> ) bracket<A, B>({
  1. required Task<void> release(
    1. A
    ),
  2. required Task<B> use(
    1. A
    ),
})

Implementation

Task<B> Function(Task<A>) bracket<A, B>({
  required Task<void> Function(A) release,
  required Task<B> Function(A) use,
}) =>
    (acquire) => () async {
          final resource = await acquire();
          try {
            return use(resource)();
          } finally {
            await release(resource)();
          }
        };