Picasso Carregar imagem no destino

Estou usando o Picasso para baixar várias imagens. Normalmente, eu apenas os mostro em umImageView mas nessa situação, quero manter uma forte referência a eles para poder usá-los em locais diferentes sem precisar consultar o cache ou fazer o download novamente. Aqui está como eu estou tentando fazer isso (observe que há mais nessa classe - eu a reduzi apenas às partes que são relevantes para esta pergunta):

public class MapLayer {

    private Context mContext;
    private String mType;
    private Drawable mIcon = null;

    public MapLayer (Context context, String type) {
        mContext = context;
        mType = type;
        downloadIcon();
    }

    public Drawable getIcon() {return mIcon;}

    private void downloadIcon() {

        String url = mContext.getString(R.string.maps_icon_url).replace("${type}", mType));

        Target target = new Target() {
            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                Log.d(TAG, "on bitmap loaded");
                mIcon = new BitmapDrawable(mContext.getResources(), bitmap);
            }

            @Override
            public void onBitmapFailed(Drawable errorDrawable) {
                Log.d(TAG, "on bitmap failed");
            }

            @Override
            public void onPrepareLoad(Drawable placeHolderDrawable) {
                Log.d(TAG, "on prepare load");
                mIcon = placeHolderDrawable;
            }
        };

        ImageDownloader.getSharedInstance().load(url).into(target);
    }
}

Em todos os casos, recebo a saída:

on prepare load

mas nada mais. Meu ícone é sempre nulo. Eu sei disso de outras classes onde eu chamogetIcon().

O que estou perdendo aqui? Obrigado por qualquer ajuda.

questionAnswers(2)

yourAnswerToTheQuestion