dry-monads: flaws or intended behaviour?

Hi everyone, first post here, thanks for your incredible work with the dry ecosystem.

I created this topic because I’ve been using dry-monads at my job for 2 years now but think there are two edge cases which really impact how I wrote the code.

First of all, using yield and rescue in the same method breaks the Do Notation because it catches Dry::Monads::Do::Halt instead of the real error type.

def my_method
  yield Failure('error code')
rescue StandardError => e
  # e is an instance of Dry::Monads::Do::Halt
  Failure(e)
end

Similarly, it’s not possible to use yield inside Try because it returns Failure(Dry::Monads::Do::Halt)

def my_method
  Try do
     yield Failure('error code')
  end.to_result
end

correct me if I’m wrong but I’ve not read anything about this in the official documentation.
Is this the intended behaviour? If yes, why?