//contracts/GatewayFetchTarget.sol

    function fetchCallback(
        bytes calldata response,
        bytes calldata carry
    ) external view {
        Session memory ses = abi.decode(carry, (Session));
        (bytes[] memory values, uint8 exitCode) = ses.verifier.getStorageValues(
                ses.context, //@audit-info note: is this context checked?
                ses.req,
                response
            );
        (bool ok, bytes memory ret) = address(this).staticcall(
            abi.encodeWithSelector(ses.callback, values, exitCode, ses.carry)
        );
        if (ok) {
            assembly {
                return(add(ret, 32), mload(ret))
            }
        } else {
            assembly {
                revert(add(ret, 32), mload(ret))
            }
        }
    }
