ordered (?) list of requests mapping to relevant resources. When all resources
are in the ready queue (as is initially) allocation will be attempted. All
failed allocations are moved to the blocking queue where they reside until they
are updated.

updates can be the result of freeing resources or of arbitrary events, and
'resource_updated' is an event of the pool (any number of pools can register
for revents) that moves the resource from the blocking to the ready queue of
all the associated requests.

when all allocation tries succeed they will be finalized atomically, and the
resource is fulfilled


