Return full deferred instead deferred.promise()

This allows for the ability to cancel any fetch request as it
now gives the full promise and all functionality with that.

fixes #71