[Haskell] What guarantees (if any) do interruptible operations have in presence of asynchronous exceptions?