Guard emitted events from http module.

Only allow either the HTTP loading or error callback to be fired,
but never both. Without this guard, it is possible for both
callbacks to fire and trigger multiple branches of the request
lifecycle, culminating in multiple 'complete' callbacks.

References #291, #300