     else
       args.push(callback)
     @send({event: 'start', args})
+    undefined
 
   # Public: Send message to the task.
   #
   # Throws an error if this task has already been terminated or if sending a
   # message to the child process fails.
   #
-  # message - The message to send to the task.
+  # * `message` The message to send to the task.
+  #
+  # Returns undefined.
   send: (message) ->
-    throw new Error("Cannot send message to terminated process") unless @childProcess?
-    @childProcess.send(message)
+    if @childProcess?
+      @childProcess.send(message)
+    else
+      throw new Error('Cannot send message to terminated process')
+    undefined
 
   # Public: Forcefully stop the running task.
   #
-  # No events are emitted.
+  # No more events are emitted once this method is called.
+  #
+  # Returns undefined.
   terminate: ->
     return unless @childProcess?
 

# * task:error - Emitted when console.error is called within the task.
# * task:completed - Emitted when the task has succeeded or failed.
#
# ## Requiring in packages
#
# ```coffee
#   {Task} = require 'atom'

  # Throws an error if this task has already been terminated or if sending a
  # message to the child process fails.
  #
  # * `args` The arguments to pass to the function exported by this task's
  #          script.
  # * `callback` (optional) A {Function} to call when the task completes.
  #
  # Returns undefind.
  start: (args..., callback) ->
    throw new Error('Cannot start terminated process') unless @childProcess?

    @handleEvents()
    if _.isFunction(callback)
