src/Extensions/GridFieldBetterButtonsItemRequest.php
public function customaction(HTTPRequest $r)
    {
        $req = new BetterButtonsCustomActionRequest($this, $this->owner, $this->owner->ItemEditForm());

        return $req->handleRequest($r, DataModel::inst());
    }
public function customaction(HTTPRequest $r)
    {
        $req = new BetterButtonsCustomActionRequest($this, $this->owner, $this->owner->ItemEditForm());

        return $req->handleRequest($r, DataModel::inst());
    }
Handles all custom action from DataObjects and hands them off to a sub-controller.
e.g. /customaction/mymethodname

Can't handle the actions here because the url_param '$Action!' gets matched, and we don't
get to read anything after /customaction/

@param  HTTPRequest $r
@return BetterButtonsCustomActionRequest