@Nonnull
    default TaskBuilder.ThreadContextual on(@Nonnull ThreadContext context) {
        switch (context) {
            case SYNC:
                return sync();
            case ASYNC:
                return async();
            default:
                throw new AssertionError();
        }
    }
Defines the thread context of the new task,
and returns the next builder in the chain.

@param context the context to run the task in
@return a contextual builder
helper/src/main/java/me/lucko/helper/scheduler/builder/TaskBuilder.java