In my jquery-plugin, after completing an animation, i am getting called "destroy" function twice.. any one correct me the wrongs what i do?

function:

```
;(function ( $, window, document, undefined ) {

    $.fn.BackendProcess = function(){

        var that = this;

        destroy = function(){
            console.log(arguments.callee.caller.toString());//consoling 2 times
        }

            that.bind( "myEventStart", function( e ) {
                $(this).css({width:"500"});
            });

            that.bind( "myEventEnd", function( e ) {
                setTimeout(function(){
                    $(that).animate({width :"100"},{
                        easing: 'swing',
                        duration:2000
                    }).promise().done(function(){destroy()});

                })
            });

        return{
            start:function(){
                that.trigger("myEventStart");
            },
            stop:function(){
                that.trigger("myEventEnd");
            },
            destroy:function(){
                console.log("distroy starts");
            }

        }
    }
})( jQuery, window , document );

$(".myButton").BackendProcess().start();
$(".myButton").BackendProcess().stop();

```

[Here is the demo](http://jsfiddle.net/PqH4x/1/)