Note that if the backend graph contains multiple backends then payloads may be requested multiple times. It will be up to the provider implementation to decide if a requested payload should be cached in case of future access or not. The methods are not const in order to make it easier for derived classes to cache the results if needed without the use of mutable.