Needs to be safe to use with threads and continuations. Primarily for allowing things like dynamically redirecting default I/O.