       logger.info "Initialising with sessionToken: #{values[0].token} and keyManagerToken: #{values[1].token}"
 
   echo: (body) =>
-    @_httpAgentPost('/agent/v1/util/echo', true, body)
+    @_httpAgentPost('/agent/v1/util/echo', body)
 
   whoAmI: =>
-    @_httpPodGet('/pod/v1/sessioninfo', true)
+    @_httpPodGet('/pod/v1/sessioninfo')
 
   getUser: ({userId, username, emailAddress}) =>
     if userId?
-      @_httpPodGet("/pod/v2/user?uid=#{userId}&local=true", true)
+      @_httpPodGet("/pod/v2/user?uid=#{userId}&local=true")
     else if username?
-      @_httpPodGet("/pod/v2/user?username=#{username}&local=true", true)
+      @_httpPodGet("/pod/v2/user?username=#{username}&local=true")
     else if emailAddress?
-      @_httpPodGet("/pod/v2/user?email=#{emailAddress}&local=true", true)
+      @_httpPodGet("/pod/v2/user?email=#{emailAddress}&local=true")
     else
       Q.reject('No user arguement supplied')
 

        logger.warning "received #{res?.statusCode} error response from https://#{host}#{path}: #{err}"
        deferred.reject(new Error(err))
      else
        if failUnlessHttp200 && Math.floor(res?.statusCode / 100) != 2
          err = "received #{res?.statusCode} response from https://#{host}#{path}: #{JSON.stringify(data)}"
          logger.warning err
          deferred.reject new Error(err)

      message: message
      format: format
    }
    @_httpAgentPost("/agent/v2/stream/#{streamId}/message/create", body)

  getMessages: (streamId) =>
    @_httpAgentGet("/agent/v2/stream/#{streamId}/message")

  createDatafeed: =>
    @_httpAgentPost('/agent/v1/datafeed/create')

  readDatafeed: (datafeedId) =>
    @_httpAgentGet("/agent/v2/datafeed/#{datafeedId}/read")

  createIM: (userId) =>
    @_httpPodPost('/pod/v1/im/create', [userId])

  _httpPodGet: (path) =>
    @sessionAuth().then (value) =>
      headers = {
        sessionToken: value.token
      }
      @_httpGet(@agentHost, path, headers)

  _httpPodPost: (path, body) =>
    @sessionAuth().then (value) =>
      headers = {
        sessionToken: value.token
      }
      @_httpPost(@agentHost, path, headers, body)

  _httpAgentGet: (path) =>
    Q.all([@sessionAuth(), @keyAuth()]).then (values) =>
      headers = {
        sessionToken: values[0].token
        keyManagerToken: values[1].token
      }
      @_httpGet(@agentHost, path, headers)

  _httpAgentPost: (path, body) =>
    Q.all([@sessionAuth(), @keyAuth()]).then (values) =>
      headers = {
        sessionToken: values[0].token
        keyManagerToken: values[1].token
      }
      @_httpPost(@agentHost, path, headers, body)

  _httpGet: (host, path, headers = {}) =>
    @_httpRequest('GET', host, path, headers)

  _httpPost: (host, path, headers = {}, body) =>
    @_httpRequest('POST', host, path, headers, body)

  _httpRequest: (method, host, path, headers, body) =>
    deferred = Q.defer()
    options = {
      baseUrl: 'https://' + host
