It was supposed to be a Halloween Brexit, when the lights would finally go out on the UK’s 46-year membership of the European project, at 11pm on Thursday, 31 October. Ten million celebratory 50p coins bearing the words “friendship with all nations” were being prepared as mementoes.

Brexiters had planned big parties to toast the moment with champagne and fireworks. A giant £100m government advertising campaign aimed at businesses and the public had been programmed to peak on social media, billboards, television, radio stations and in newspapers on Brexit day.

And there would be a special post-Brexit budget on 6 November to underline how the country was setting out on a new independent course.

The UK’s exit on the last day of the month had been the firmest of promises from the prime minister, Boris Johnson, the one he used as the centrepiece of his successful campaign for the Tory leadership over the summer.

His rival in the final round of the contest, Jeremy Hunt, was weak and prepared to delay Brexit, he told Tory members at dozens of hustings. By contrast, he was made of sterner stuff and would deliver Brexit on 31 October with “no ifs, no buts”. He would rather be “dead in a ditch” than delay it again, he declared after becoming PM.

But nothing to do with Brexit can be predicted; no promise cannot be broken. This weekend the Brexiters’ champagne has been put on ice, the issue of the 50p coins is on hold, the ad campaign has been stalled, and chancellor Sajid Javid’s first budget is erased from the government grid.

Three years and four months on from the 2016 referendum, there is no set date on which Brexit will happen. On Sunday even Johnson himself is having to admit as much, as he tries to conceal his failure to deliver on time under a blizzard of blame.

The prime minister is warning on Sunday that Brexit may not happen even until well into next year. He blames parliament, and above all Jeremy Corbyn. MPs, he says, have taken the whole process “hostage”. “Parliament’s delay could take us to 31 January at least” is his message.

Only 10 days ago, Johnson was at a Brussels summit proclaiming a “great deal” on the terms of the UK’s exit with the EU. He had persuaded European leaders to reopen the withdrawal agreement negotiated under his predecessor, Theresa May, and had pushed them into scrapping the “undemocratic” Northern Irish backstop. Before the deal – but expecting to strike one – he had called an emergency sitting of parliament for last Saturday to seek MPs’ approval for what he had negotiated. He knew he had to do so to avoid being forced by the Benn Act to write to Brussels to ask for another extension to Brexit until 31 January if there was no agreement by 11pm that day.

But from the moment Johnson left Brussels, nothing went to plan. First, parliament withheld its support for his Brexit deal on Saturday until the legislation on the UK’s withdrawal had been thoroughly scrutinised and passed through both houses of parliament. He had been cornered by the Benn Act and wrote that evening to the EU asking for the extension he had promised never to request, though he also told Europeans in separate letters that he did not want one, and that delay would solve nothing.

His final gambit to try to meet the 31 October deadline – and make the extension unnecessary – was to put the withdrawal agreement bill before parliament last Tuesday, in the hope of getting it approved in time. In a rare victory for Johnson, MPs did vote in favour of giving the bill a second reading – meaning it could proceed to more detailed scrutiny.

But no sooner had his hopes of progress been raised than they were dashed again when the Commons rejected the PM’s “timetable motion” aimed at fast-tracking the whole bill through parliament in just a few days. From that moment his hopes were effectively dead.

Jeremy Corbyn leaves after speaking at an activists in Motherwell. Photograph: Andrew Milligan/PA

Downing Street was forced to change tack on Thursday, when Johnson wrote to Corbyn saying MPs had a “duty to end this nightmare”. In a dramatic move, Johnson said he would allow parliament more time to examine the Brexit legislation – but only if MPs agreed to hold a general election on 12 December.

It was a tall order and Downing Street knew it. For parliament to agree to a pre-Christmas election, two-thirds of MPs would need to vote in favour of it under the Fixed Term Parliaments Act. Johnson needed Labour to support the idea of going to the country.

The pressure and the focus turned on to Corbyn, who for more than a year had been demanding a general election at every turn. Would he agree? But with Labour well behind the Conservatives in the polls (by 16 points in today’s Opinium survey for the Observer) the prospect of an election, when actually offered, was not nearly as appealing as asking for one had been – and it was the last thing most Labour MPs wanted.

Corbyn blew hot and cold on Thursday evening about how to react, before coming out more against a December election than for, fearing he would be walking into a trap.

In interviews he avoided direct answers, saying that, while he wanted an election desperately, he would not agree to one until a no-deal Brexit had been ruled out and also until the EU had given a response to the request from Johnson for a Brexit extension – which it is now expected to give early this week. On Saturday on a visit to Scotland, he made no direct reference to the Johnson offer.

With MPs and the country increasingly weary of the twists and turns and, above all, the political paralysis, the parliamentary drama will resume again on Monday. Johnson will table a motion calling for an election on 12 December. Corbyn is expected not to take up the offer. Labour is likely to order its MPs to abstain, meaning the motion will probably fall, whatever positions are taken by other parties, the SNP, the Liberal Democrats and the DUP.

So what then, MPs were asking themselves on Saturday. “By Monday we are likely to have no Brexit, no decision from the EU on an extension, and no general election,” one senior Labour MP observed. “Where we go from there is anyone’s guess. I have no idea.”