Rx Java Android: Como converter esse bloco de retorno de chamada em Observer

Estou tentando fazer upload de um arquivo via SDK para Android S3 da Amazon. Eu usei o RX Java um pouco, mas não sei como converter esse método para um método que retorna um Observable, porque quero encadear o resultado desse método para outra chamada do Observable. Isso me confunde, suponho, pelo fato de que isso não retorna imediatamente e não pode retornar até que OnError ou OnState sejam alterados. Como lidar com essas situações de uma maneira RX?

public void uploadFile(TransferObserver transferObserver){

    transferObserver.setTransferListener(new TransferListener() {
        @Override
        public void onStateChanged(int id, TransferState state) {

        }

        @Override
        public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {

        }

        @Override
        public void onError(int id, Exception ex) {

        }
  });

}

Se alguém pudesse responder com o RX Java 2 e lambdas, isso seria ótimo, porque eu continuo com essa questão

questionAnswers(2)

yourAnswerToTheQuestion