No revert message when "gasLimit" is set

When calling a contract function:

await contract.connect(gsnSigner).stateChange()

I receive a clear revert message. However when I supply a gas limit to the call:

await contract.connect(gsnSigner).stateChange({ gasLimit: 500000 })

There is no revert message or error. Is there a way to pass the gas limit while also getting a revert message?

EDIT: The error I was originally receiving was transaction may fail or may require manual gas limit (error=... which I incorrectly assumed was needing a gasLimit param. Unfortunately, adding that gas limit caused my errors to stop. If I recall correctly this error is a gasEstimation error, where the gas estimation breaks if it hits a revert or if gasEstimation needs a manual gas limit. I’m not sure why these two are coupled but it’s the same in web3 so I can’t complain.

My solution was to use:

let tx = await contract.stateChange({ gasLimit: 500000 })
await tx.wait(1)

Yes, this is the way to handle transactions with ethers.
I’m just not sure how it is related to gsn: it is true regardless your using gsn or not