use ctx.isReady everywhere