Skip to main content
Module

x/effection/mod.ts>ensure

Structured concurrency and effects for JavaScript
Go to Latest
function ensure
import { ensure } from "https://deno.land/x/effection@3.0.0-beta.2/mod.ts";

Run the given function or operation when the current operation shuts down. This is equivalent to running the function or operation in a finally {} block, but it can help you avoid rightward drift.

Examples

import { main, ensure } from 'effection';
import { createServer } from 'http';

await main(function*() {
  let server = createServer(...);
  yield* ensure(() => { server.close() });
});

Note that you should wrap the function body in braces, so the function returns undefined.

import { main, ensure, once } from 'effection';
import { createServer } from 'http';

await main(function*() {
  let server = createServer(...);
  yield* ensure(function* () {
    server.close();
    yield* once(server, 'closed');
  });
});

Your ensure function should return an operation whenever you need to do asynchronous cleanup. Otherwise, you can return void

Parameters

fn: () => Operation<unknown> | void
  • a function which returns an Operation or void