You are also adding a listener and never removing it, use the rxgwt utilities for observing event which handle that correctly

Oh I see, and this is an Observable? Remember, never ever subscribe inside another subscription, use flap Map instead

RxJava is like callback on steroids, so whenever you see a callback you can trivially wrap it as a RxJava type, readasdataurl has a callback, so wrap it as a rxtype and flatMap too (when I say flatMap, you can use the one you need, flatMap, concatMap, switchMap...)