code: function makeLocal(id) {
          if (hasLocal(id)) {
              return getLocal(id).promise;
          } else {
              var deferred = Q.defer();
              locals.set(id, deferred);
              return deferred.promise;
          }
      }
docs: construct a local promise, such that it can be resolved later by a remote message