Do Durable Objects immediately restart on a transfer migration?

The documentation ( isn’t clear on what the precise timing of a Durable Objects transfer migration looks like.

  • Are event.waitUntil() promises guaranteed to finish before the old durable object process is destroyed?
  • For a Durable Object with WebSockets, are all the WebSockets immediately closed on transfer?
  • Does a Durable Object live on the old script version forever until WebSockets have closed and event.waitUntil()s have resolved? Then next time the Durable Object is hit it uses the new script? (If so I should probably build a way to force shutdown Durable Objects?)

I’m building a Durable Object with some short-lived in-memory state and trying maintain consistency across deploys. Any information about the precise sequencing of transfer migrations would be helpful, thanks!