Executes in the current thread. Uses a thread local trampoline to make sure the stack
doesn't overflow. Since this ExecutionContext executes on the current thread, it should
only be used to run small bits of fast-running code. We use it here to run the internal
Blocking should be strictly avoided as it could hog the current thread.
Also, since we're running on a single thread, blocking code risks deadlock.