Algebraic effects in javascript with scoped handlers, multishot delimited continuations, stack safety and do notation