   run: (command, extraArgs, codeContext) ->
     @startTime = new Date()
 
+    args = @args(codeContext, extraArgs)
+    options = @options()
+    stdout = @stdoutFunc
+    stderr = @stderrFunc
+    exit = @onExit
+
     @bufferedProcess = new BufferedProcess({
-      command,
-      @args(codeContext, extraArgs),
-      @options(),
-      @stdoutFunc,
-      @stderrFunc,
-      @onExit
+      command, args, options, stdout, stderr, exit
     })
 
     if @inputProvider


    @emitter.emit 'did-exit', { executionTime: executionTime, returnCode: returnCode }

  onDidExit: (callback) =>
    @emitter.on 'did-exit', callback

  createOnErrorFunc: (command) =>

      @emitter.emit 'did-not-run', { command: command }
      nodeError.handle()

  onDidNotRun: (callback) ->
    @emitter.on 'did-not-run', callback

  options: ->
