@zaach - since all of the client wrapper functions return a promise, we should be able to abstract the real client creation within there and avoid all of the FxaClient.getAsync() business.

I am experimenting with this approach now, and thinking something along the lines of:

```js
  function FxaClientWrapper() {
  }

  FxaClientWrapper.prototype = {
    _withClient: function () {
      var defer = $.Deferred();

      if (this.fxaClient) {
        defer.resolve(this.fxaClient);
      } else {
        $.getJSON('/config', function (data) {
          this.fxaClient = new FxaClient(data.fxaccountUrl);
          defer.resolve(this.fxaClient);
        }.bind(this));
      }

      return defer.promise();
    },

    signIn: function (email, password) {
      return this._withClient()
                .then(function (client) {
                  return client.signIn(email, password, { keys: true });
                });
    },

```