Implementing Compensating Actions with Scoped Release in Effect Pattern
I'm trying to implement the pattern in https://effect.website/docs/guides/resource-management/patterns/sequence-of-operations-with-compensating-actions-on-failure, but saw unexpected behaviour on the
Both
release side when rolling back as the HTTP request being made there was cancelled. I had to place the release side in its own scope:Both
Slack.chatPostMessage and Slack.chatDelete don't close the scope created by making an HTTP request (the former's implementation/type is https://github.com/PREreview/coar-notify/blob/91eeec411cc71160c638785ecef07d4747d30975/src/Slack.ts#L98-L131). I'm thinking that I should be close those scopes which would have avoided this issue, but shouldn't the release be run in its own scope anyway?