# Replace cy.then command
Many people have a problem with the cy.then (opens new window) command. It behaves almost like a promise, causing confusion. Let's replace it with a custom cy.later
command.
// if anyone tries to use cy.then in the spec code or in a plugin
// we will get an error
Cypress.Commands.overwrite('then', function (
then,
subject,
cb,
allowUse,
) {
if (!allowUse) {
throw new Error('Using cy.then command is disallowed')
}
return then(subject, cb)
})
Cypress.Commands.add(
'later',
{ prevSubject: true },
(subject, cb) => {
// cy.later behaves just like cy.then
// which we implement by calling the original cy.then command
return cy.now('then', subject, cb, true)
},
)
cy.wrap('Hello')
.should('be.a', 'string')
.later((x) => x + x)
.should('equal', 'HelloHello')
Read the blog post Replace The cy.then Command (opens new window).