diff --git a/CHANGELOG.md b/CHANGELOG.md index eb9c627..b112a89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [4.0.0] +### Changed +- `Promise:finally` no longer observes a rejection from a Promise. Calling `Promise:finally` is mostly transparent now. + - The Promise returned by `Promise:finally` resolves or rejects with whatever the parent Promise resolved or rejected with. It will be cancelled if the parent Promise is cancelled. + - The value returned from the `finally` handler is discarded now. + - If the value returned from the `finally` handler is a Promise, we wait for it to resolve, but we do not use its value. + - If the value returned from the `finally` handler is a Promise and it rejects, `finally` returns the new rejected value. +- `Promise:finally` no longer counts as a consumer of the parent Promise for cancellation purposes. If all consumers are cancelled and the only remaining callbacks are finally handlers, the Promise is now cancelled. +- The Promise executor thread is now closed with `coroutine.close` when the Promise is cancelled. +- The Promise executor thread is now closed after the Promise settles (calling `resolve` or `reject`). +- Callbacks enqueued with `andThen` and `catch` are now dequeued if the Promise returned by `andThen`/`catch` is cancelled. +- Calling `andThen` or `catch` on an already-cancelled Promise now returns a cancelled Promise instead of returning a rejected Promise +- `:await`, `:expect`, and `:awaitStatus` are no longer backed by BindableEvents, and now use the task library directly, so performance should be better. + ## [4.0.0-rc.3] ### Fixed - Fix unhandled rejection warning appearing when using :awaitStatus diff --git a/rotriever.toml b/rotriever.toml index 0810126..b105f14 100644 --- a/rotriever.toml +++ b/rotriever.toml @@ -1,6 +1,6 @@ [package] name = "evaera/roblox-lua-promise" -version = "4.0.0-rc.3" +version = "4.0.0" author = "evaera" content_root = "lib" license = "MIT" diff --git a/wally.toml b/wally.toml index 393de09..4d85244 100644 --- a/wally.toml +++ b/wally.toml @@ -1,7 +1,7 @@ [package] name = "evaera/promise" description = "Promise implementation for Roblox" -version = "4.0.0-rc.3" +version = "4.0.0" license = "MIT" registry = "https://github.com/UpliftGames/wally-index" realm = "shared"