Version 3.1.0 is behind the current release: jump to latest version (3.6.1).
function ensure
thefrontside/effectionRun 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
Example 1
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.
Example 2
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
Return Type
Operation<void>