It is valid to pass an inactive persistent request into any completion function. In multi-threaded execution, the same request could be passed to a start function. This will result in similar issues as concurrently waiting on the same request (which is therefore defined erroneous).
This can lead to a situation where the request is initially inactive when the completion function is entered, but might be active at the time the completion function returns.
Proposal
Extend the restriction for concurrent use of a request to include starting functions. (Paragraph "Multiple threads completing the same request")
Changes to the Text
Impact on Implementations
Allow reasonable implementation of correct waiting calls.
Impact on Users
Set clear expectations and ensure semantically reasonable behavior.
Problem
It is valid to pass an inactive persistent request into any completion function. In multi-threaded execution, the same request could be passed to a start function. This will result in similar issues as concurrently waiting on the same request (which is therefore defined erroneous).
This can lead to a situation where the request is initially inactive when the completion function is entered, but might be active at the time the completion function returns.
Proposal
Extend the restriction for concurrent use of a request to include starting functions. (Paragraph "Multiple threads completing the same request")
Changes to the Text
Impact on Implementations
Allow reasonable implementation of correct waiting calls.
Impact on Users
Set clear expectations and ensure semantically reasonable behavior.
References and Pull Requests
The issue is related to #846