/fixes #9973 /fixes #9974 /claim #9973

This PR fixes two issues, which both contribute to Queue#take dropping items:

  1. There is an interruption gap between uninterruptible regions (see changes under FiberRuntime)
  2. Queue#take did not take into account that it had to return items to the queue in case that the promise was already fulfilled (with interruption)

Note that:

Leaving as draft cause I want to go over the queue code once more with a fresh mind, and to see if CI agrees with my changes

Full disclaimer: While the solution seems rather simple, this was one of the hardest issues I ever worked on. Figuring out the changes needed to be done in FiberRuntime in a way that didn’t break existing functionality took an enormous amount of time

Claim

Total prize pool $1,000
Total paid $0
Status Pending
Submitted August 16, 2025
Last updated August 16, 2025

Contributors

KY

Kyri Petrou

@kyri-petrou

100%

Sponsors

ZI

ZIO

@ZIO

$1,000