Question: I would like to create a graph that has superscripts on the axis instead of displaying unformatted numbers using `ggplot2`. **I know that there are a lot of answers which change the axis label, but not the axis text. I am not trying to change the label of the graph, but the text on the axis.**

Example:

```
x<-c('2^-5','2^-3','2^-1','2^1','2^2','2^3','2^5','2^7','2^9','2^11','2^13')
y<-c('2^-5','2^-3','2^-1','2^1','2^2','2^3','2^5','2^7','2^9','2^11','2^13')
df<-data.frame(x,y)
p<-ggplot()+
  geom_point(data=df,aes(x=x,y=y),size=4)
p

```

So I would like the x-axis to display the same numbers but without the carrot. 

[![enter image description here](https://i.stack.imgur.com/fAqMm.png)](https://i.stack.imgur.com/fAqMm.png)

Answer: 
```
completable1.doSomething()
    .andThen(completable2.doSomethingElse())

```

> 
> Shouldn't andThen() never be called if the first completable emitts error?
> 
> 
> 

`andThen` will always call `completable2.doSomethingElse()` to build the stream, but the Completable that is returned by it will never be subscribed to.

You can test it this way:

```java
when(completable1.doSomething()).thenReturn(Completable.error(error));

CompletableSubject completableSubject = CompletableSubject.create();
when(completable2.doSomethingElse()).thenReturn(completableSubject);

TestObserver testObserver = completable1.doSomething()
    .andThen(completable2.doSomethingElse()).test();

// Verify that completable2.doSomethingElse() was never subscribed to:
assertFalse(completableSubject.hasObservers());

testObserver
    .assertError(error)
    .assertNotComplete();

```

Edit: for further clarification:

Given your methods are defined like this:

```java
private Completable updateQuestion(Question question) {
    System.out.println("prints when the updateQuestion is called");
    return Completable.fromAction(() -> {
        System.out.println("prints when updateQuestion is subscribed to");
        database.updateQuestion(question);
    });
}

private Completable updateGame() {
    System.out.println("prints when the updateGame is called");
    return Completable.fromAction(() -> {
        System.out.println("prints when updateGame is subscribed to");
        database.updateGame();
    });
}

```

Suppose you call:

```
updateQuestion(question)
    .andThen(updateGame())
    .subscribe();

```

And `database.updateQuestion(question);` throws an error.

Then your log output would be:

```
prints when the updateQuestion is called
prints when the updateGame is called
prints when updateQuestion is subscribed to
>> error 

```

and `database.updateGame();` will never be executed
If anybody stuck with the same issue try to `defer` the second Completable.

abstract example:

```
repo.executeCompletable1()
                .andThen(
                    Completable.defer {
                        repo.executeCompletable2()
                    }
                )

```