 			# We've started the new container, so we're done here! #pray
 			process.exit()
 	.catch (err) ->
+		utils.mixpanelTrack('Supervisor update failed', error: err)
 		console.error('Error updating supervisor:', err)
 		throw err

		])
	.spread (localImageInfo, currentSupervisorImage) ->
		if localImageInfo.id == currentSupervisorImage
			console.log('Supervisor is up to date')
			return
		console.log('Creating updated supervisor container:', localImage)
		docker.createContainerAsync(
			Image: localImage

supervisorUpdating = Promise.resolve()
exports.update = ->
	# Make sure only one attempt to update the full supervisor is running at a time, ignoring any errors from previous update attempts
	supervisorUpdating = supervisorUpdating.catch(->).then ->
		utils.mixpanelTrack('Supervisor update check')
		console.log('Fetching supervisor:', remoteImage)
		docker.createImageAsync(fromImage: remoteImage)
	.then (stream) ->
