User blog comment:Crosaffcheg/Barry screwed up again/@comment-3221148-20170130165939/@comment-3221148-20170130173945

Was it spelled out as a "deal" though? IIRC, Barry was a dying mess and couldn't protest too much or speak on any terms. If anything, Thawne implied that he wanted to kill Barry in his weakness so much, but that would screw up some other timeline laws or whatyouhaveit.

As for the Joker, there's an out-of-universe reason and an in-universe one.

1) Out of universe, keeping popular villains around keeps public interest in the public. With the films, though, it's not like that (which is why Batman'89 had the Joker killed in the end).

2) In-universe, Batman self-restricting himself as a vigilante. Basically, he's already going against the law with his vigilantism, him not killing people is not only a testament to his character, but a guarantee to the police that there are lines he won't cross. In the finale of "No Man's Land", when Joker killed Gordon's wife, Gordon asked why Batman won't kill him. Batman replies that he won't kill the Joker, but wouldn't stop Gordon from doing so. Gordon tried to kill J, but decided "it's been too much blood already".

...So, it's mostly the first one. Since, outside of Batman, there are hundreds of people with motives and means to kill Joker, but nobody does and the public blames Batman instead.