code: function _handleResult(id, name, result, message) {
                  var retMsg;
                  var params;
  
                  // If the result is async (promise) we need to defer the execution of the results data
                  if (("undefined" !== typeof Promise && result instanceof Promise) || result instanceof PostMessagePromise) {
                      // Handle async using promises
                      result.then(function (data) {
                          params = [id, ACTION_TYPE.RETURN, null];
  
                          if (ACTION_TYPE.REQUEST === name) {
                              params.push(data);
                          }
  
                          // Call the mapping method to receive the message structure
                          retMsg = this.mapper.toMessage.apply(this.mapper, params);
  
                          // Post the message
                          _returnMessage.call(this, retMsg, message.source);
                      }.bind(this), function (data) {
                          params = [id, ACTION_TYPE.RETURN, data];
  
                          // Call the mapping method to receive the message structure
                          retMsg = this.mapper.toMessage.apply(this.mapper, params);
  
                          // Post the message
                          _returnMessage.call(this, retMsg, message.source);
                      }.bind(this));
                  }
                  else {
                      if (result && result.error) {
                          params = [id, ACTION_TYPE.RETURN, result];
  
                          // Call the mapping method to receive the message structure
                          retMsg = this.mapper.toMessage.apply(this.mapper, params);
  
                          // Post the message
                          _returnMessage.call(this, retMsg, message.source);
                      }
                      else if ("undefined" !== typeof result) {
                          params = [id, ACTION_TYPE.RETURN, null];
  
                          if (ACTION_TYPE.REQUEST === name) {
                              params.push(result);
                          }
  
                          // Call the mapping method to receive the message structure
                          retMsg = this.mapper.toMessage.apply(this.mapper, params);
  
                          // Post the message
                          _returnMessage.call(this, retMsg, message.source);
                      }
                  }
              }
docs: Method for handling the result of the call (this can be the response or a defer/promise)
  @param {String} id - the id of the message
  @param {String} name - message name
  @param {Object} result - the result object
  @param {Object} message - original message structure
  @private