次のようなスクリプトがあった場合、私が思っていた結果は"aab"なのですが、"aaaab"が返ってきてしまいます。

s = "aaaab"
pattern = r"a{2,4}?b"

match = re.search(pattern, s)
if match is not None:
    print(match.group(0))

patternを r"a{2,4}?" にすると"aa"が返ってくるのに r"a{2,4}?b" だとaの数が4つになるのが気持ち悪いです。
これはPythonのバグなのでしょうか。公式ドキュメントには"少なく 繰り返したものとマッチする"と書かれているのですが。。

バージョンは 2.7.11 です。
(バージョン3ではどのような挙動になるのかも、教えていただけると助かります。)