If I understand, the module must define the on_request_exploit callback.  What happens if an exploit needs two or more steps for exploitation? I guess the logic to chain the steps should be written into the exploit, inside the on_request_exploit callback, right? which usually is a little annoying.  

Just asking if could be possible to drive exploitation also from the mixin, so the module can define a set of callbacks or exploitation steps which must be chained. Again, just proposing. Maybe I'm forgetting something, or the idea isn't good.