Likely no difference. Tuple is obsolete anyway - it does not have nice syntax, can't have named values, etc. If you'd like to avoid allocations in a hot but asynchronous path you'll need to execute this together with other code and use ValueTask PoolingAsyncValueTaskMethodBuilder