Gitlab CI: deploy to production after waiting period

I’d like to build a pipeline that runs a deployment to staging, then waits for an amount of time and deploys to production, if the pipeline is not cancelled before that.

AFAICT the only way to do that would be to run a “sleep” command in a job, which I would like to avoid because it blocks a runner doing nothing. Is there another way to realize this?