Simplify run_callbacks_for
Support sending headers to requests
Support sending timeout to requests
Move request data to separate object
Support more advanced requests